VB.NETを使用して、ReSharperのガイドラインに従ってコードベースをクリーンアップしようとしています。私は現在、次のコードを持っている:暗黙的に定義された変数が明示的に定義されている実行時エラーをスローしません
'oSearchInput is defined outside this question
Dim oSearchRoutines As New SearchClient
Dim oSearchResults As List(Of SearchResult)
oSearchRoutines = 'WcfCallThatReturnsSearchClient
oSearchResults = oSearchRoutines.getSearchResults(oSearchInput).ToList
は今、これは完全に正常に動作しますが、ReSharperのはAs New SearchClient
は、「割り当てられた値は、任意の実行パスで使用されていない」持っていることを警告しています。だから私はこのコードを取得するためにその部分を削除しました:
私はこれを正しく理解していれば、すべてがまったく同じになるはずです。ただし、ToList
を呼び出すと、エラーがスローされます。
タイプ 'SearchResult()'にパブリックメンバー 'ToList'が見つかりません。
ここにある2つのスニペットには、なぜ違いがあるのか正確にはわかりません。
'新SearchClient'は型を宣言するよりも多くがそうであるように、そのオブジェクトを作成します。後でWcfメソッドからオブジェクトを割り当てると、最初のオブジェクトは使用されず、何の理由もなく作成されました。 2番目の宣言、 'Dim oSearchRoutines'はOption Strictでコンパイルされず、System.Objectです。 'Dim oSearchRoutines As SearchClient' – Plutonix
私は完全にはわかりませんが、エラーメッセージは遅延バインディングと拡張メソッドの共通点から発生していると思います。 'ToList'はLinqが提供する拡張メソッドなので、' oSearchRoutines'の型を明示的に宣言すると、コンパイラは 'ToList'の検索方法を知っていますが、' Object'型のときは、拡張メソッド。 – Craig