2009-05-06 31 views
0

ここで「X」はICollectionを実装するサードパーティのコンポーネントであり、「Y」はCountです。コンパイルして一時的に塊を取り除き、直ちに(1-2秒)、またはテキストエディタで編集を行った後、カウントの下に赤い塊が表示されます。 ?!どんな助けも非常に高く評価されるでしょう。Visual Studio 2008 SP1:

編集:ここでは例えば 、

ThirdPartyComponent instanceOfComponent = new instanceOfComponent(); 
instanceOfComponent.GetResults(); 

for(int i = 0; i < instanceOfComponent.Results.Count; ++i) { 
    // Some stuff happens 
} 

'カウントは' それがうまくコンパイルしていても、squiggliedされる - とさえインテリセンスに表示されます。

+0

おそらくコードサンプルを逃したでしょうか? – florin

+0

「instanceOfComponent.Results」はどのようなタイプですか? –

+1

また、赤い塊にカーソルを合わせると、ツールチップのテキストはどうなりますか?一般的にVSは、それが不平を言っている理由を教えてくれます。 –

答えて

2

VSはResults.CountResults.Count()間の曖昧さについて不平を言っているように、それが見えます。それは正常にコンパイルされますが、この可能性のあるエラーについて警告しています。 ICollectionへのキャストは、コンパイラにどちらを使用するかを明示的に指示します:

for(int i = 0; i < ((ICollection)instanceOfComponent.Results).Count; ++i) 
+0

CountプロパティとCount()メソッドの間にはあいまい性がありません。構文が異なるということは、必要なものが常に明確であることを意味します。また、[Count()]のような拡張メソッドは、常に最後に優先されます。 – Bevan

+0

私は正しい言葉を見つけることができませんでしたが、私はその意味であいまいさを意味していました。 "おそらくあなたはその方法を呼び出すことを意図していましたが、しなかった" –

+0

lcにありがとう、 –

-1

あなたが追加する必要があります。

using system.linq; 
+0

負;私がそれを追加したとき、条件付きのイテレータ(私は

0

私はあなたが使用しているどのような言語わからないんだけど、ここでは2つの可能な問題:

  1. カウントは機能ではなく、財産可能性。

  2. おそらく結果はリスト<ベースのクラスを返すプロパティであるため、instanceOfComponentではなくこのResultsオブジェクトのCountプロパティを呼び出しています。シンプルなキャストはそれを解決するはずです。上記のコメントから、

+0

はい、私はカウント()だけではなく、それ自身でなければならないと思っています。 –

+0

@Nicholas - CountはICollectionの有効な読み取り専用プロパティですおよびIList ; Count()はIEnumerable の拡張メソッドです。プロパティCountは優先的ですが、どちらも有効です。 – Bevan

関連する問題