Khi cố gắng để sử dụng phương pháp Enumerable.Count() mở rộng từ Visual Basic, kết quả mã sau vào một lỗi thời gian biên dịch:Làm cách nào để chỉ định Enumerable.Count() thay cho List.Count?
Imports System.Linq
Module Module1
Sub Main()
Dim l As New List(Of Foo) From {New Foo("a"), New Foo("b"), New Foo("a")}
Dim i As Integer = l.Count(Function(foo) foo.Bar = "a")
Console.WriteLine(i)
Console.ReadLine()
End Sub
Class Foo
Sub New(ByVal bar As String)
Me.Bar = bar
End Sub
Public Property Bar As String
End Class
End Module
Các lỗi được sản xuất là:
'Public ReadOnly Property Count As Integer' has no parameters and its return type cannot be indexed.
Tôi đang nhắm mục tiêu NET 4.0, vì vậy các phương thức khuyến nông nên được hỗ trợ. Nó cũng đáng chú ý là mã tương đương trong C# đưa vào phương thức mở rộng một cách chính xác ...
Tại sao trình biên dịch không thể suy ra việc sử dụng Enumerable.Count, cho biến vị ngữ tôi đi qua làm đối số và cách có thể Tôi sử dụng phương thức mở rộng thay vì thuộc tính Đếm của Danh sách không?
+1 Kỹ thuật này hoạt động, nhưng tôi vẫn còn đói để biết * tại sao * VB không thể suy ra ý định của tôi trong khi C# có thể ... –