Quando si tenta di utilizzare il metodo Enumerable.Count() estensione da Visual Basic, il codice seguente genera un errore in fase di compilazione:Come specificare Enumerable.Count() anziché 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
L'errore prodotto è:
'Public ReadOnly Property Count As Integer' has no parameters and its return type cannot be indexed.
ho scelto come target .NET 4.0, quindi i metodi di estensione dovrebbero essere supportati. Vale anche la pena notare che il codice equivalente in C# deduce correttamente il metodo di estensione ...
Perché il compilatore non è in grado di dedurre l'uso di Enumerable.Count, dato il predicato che sto passando come argomento, e come can Uso il metodo di estensione anziché la proprietà Count di Elenco?
+1 Questa tecnica funziona, ma ho ancora fame di sapere * perché * VB non può dedurre le mie intenzioni mentre C# può ... –