以下代码会产生令人困惑的结果。注意我来自C#背景,并且对VB知之甚少。
Module Module1
Sub Main()
Dim list As List(Of String) = New List(Of String)()
Dim result As Integer
result = list.Count() '1
result = list.Count(Function(p) True) '2
result = CType(list, IEnumerable(Of String)).Count(Function(p) True) '3
End Sub
End Module
令人困惑的地方:
有一个名为Count的属性和一个具有相同名称的扩展方法。通过调用Count(),我希望调用扩展方法,但访问该属性。为什么以及如何调用方法?
我期待扩展方法调用,但编译失败了BC32016(就好像访问了属性而不是方法)。那是为什么?
这可以按预期工作。
答案 0 :(得分:1)
我认为这是VB的限制,因为这样做并不能编译。 A已经是属性,无法使用相同名称的方法。
Class Test
Public Property A As Integer
Public Function A(ByVal b As String) As Integer
Return 0
End Function
End Class
您还有其他选择。
Enumerable.Count(list, Function(p) True)
list.AsEnumerable.Count(Function(p) True)