【问题标题】:How To Use VB.NET IList(Of T).Max如何使用 VB.NET IList(Of T).Max
【发布时间】:2011-10-01 14:56:23
【问题描述】:

如何在下面的示例中使用IList(Of T).Max 函数?

Dim myList as IList(Of Integer)

For x = 1 to 10
    myList.add(x)
Next

'Error: 'Max' is not a member of 'System.Collections.Generic.IList(Of Integer)'
MsgBox(myList.Max()) 

【问题讨论】:

    标签: .net vb.net .net-3.5 ilist


    【解决方案1】:

    您的代码在调用 myList.add 时会引发 System.NullReferenceException,因为它尚未初始化。如果您使用 List 而不是 IList ,如下所示。

    Imports System.Collections.Generic
    Module Module1
        Sub Main()
    
            Dim myList As New List(Of Integer)
    
            For x = 1 To 10
                myList.Add(x)
            Next
    
            MsgBox(myList.Max())
    
        End Sub
    End Module
    

    即使在项目中只导入系统,它也可以正常工作。

    【讨论】:

    • 如果不导入 System.Linq,我看不到该代码是如何工作的,因为 List 没有定义 Max 方法。
    • 也许是隐式导入的。例如,vbc 编译器为您使用 System.dll 和 System.Core.dll 甚至更多,但我没有尝试使用命令行显式引用它们。
    • 仅供参考,我发现this SO question 描述了在 VB 2008/2010 中隐式导入的命名空间。它包括 System.Linq 命名空间。
    • 太好了,这解释了一切。感谢分享链接。
    【解决方案2】:

    您必须确保您是import System.Linq,并将System.Core.dll 添加为对您项目的引用。

    这是因为MaxSystem.Linq.Enumerable 类中定义的扩展方法。它在System.Collections.Generic.IList(Of T) 接口中没有定义。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-19
      • 1970-01-01
      • 2017-06-10
      • 1970-01-01
      • 2018-08-11
      • 1970-01-01
      相关资源
      最近更新 更多