Public Class MyList
Inherits List(Of MyObject)
Public ReadOnly Property SelectedCount() As Integer
Get
Return Me.Count(Function(obj) obj.IsSelected)
End Get
End Property
End Class
上記のコードにより、コンパイル時エラーが発生します。ご覧のとおり、拡張メソッドを使用しようとしていますCount(<predicate>)
。List
エラーは、クラス自体にも同様の名前のプロパティ Count があり、拡張メンバーが隠されているためだと思います。
ここでの私の質問は次のとおりです。
Count
拡張メソッドにアクセスするには、クラスを別のものに明示的にキャストする必要がありますか? もしそうなら、上記のシナリオでは正確にどのクラスが必要ですか?プロパティではなくメソッドを参照しているとコンパイラが推測できないのはなぜですか?
これが頻繁に使用されるメソッドであることを考えると、キャスティングには大きなオーバーヘッドが伴いますか (1 秒間に数百回呼び出されることもあります)。
この点で、C# は VB.NET より優れていますか?
何か関係がある場合は、VS2010で.NET 4.0を使用しています。
編集
エラーメッセージ:
'
Public ReadOnly Property Count As Integer
' にはパラメーターがなく、戻り値の型にインデックスを付けることができません。