3

( i < UniqueWords.Count ) 式が for ループで有効なのに、if に配置すると "CS0019 演算子 '<' は型 'int' および 'メソッド グループ' のオペランドに適用できません" というエラーが返されるのはなぜですか? どちらも以前に宣言された文字列配列です。

for (int i = 0;i<UniqueWords.Count;i++){
        Occurrences[i] = Words.Where(x => x.Equals(UniqueWords[i])).Count();
        Keywords[i] = UniqueWords[i];
        if (i<UniqueURLs.Count) {rURLs[i] = UniqueURLs[i];}
}

宣言を追加するために編集されました:

    List<string> Words = new List<string>();
    List<string> URLs = new List<string>();

//要素はこのように追加されます。. . .

            Words.Add (referringWords); //these are strings
            URLs.Add (referringURL);

        UniqueWords = Words.Distinct().ToList();
        UniqueURLs = URLs.Distinct().ToList();

解決しました。ありがとう、メソッド .Count() には括弧が必要でした。必ずしも必要ではない理由をまだ完全には理解していません。

Jon Skeet、ありがとう、宣言が正確に何であるか理解できないと思いますか? 割り当てられた実際の値が必要ですか? これらは外部ソースから取得されますが、文字列です。

わかった!ありがとう。(()は少なくとも。)

4

7 に答える 7

10

括弧を忘れないでください:

UniqueWords.Count()
于 2009-07-16T20:40:53.683 に答える
7

どちらも文字列配列であると確信していますか?

1 つは文字列配列ではなく、もう 1 つはIEnumerable<string>ですか? それは確かにそれを説明するでしょう。(問題のメソッド グループはEnumerable.Count()拡張メソッドになります。) この場合、ブロック内でインデクサーを使用することもできません。

そうでない場合は、余分なコードを削除して宣言を含めてください。これにより、テストする短いが完全なプログラムが作成されます。

実際、あなたの編集では、値を割り当てているため、文字列配列として宣言することはできません。またはとして宣言されているが、として宣言されList<string>ていることがわかると思います。ただし、使用している場合、これは暗黙的である可能性があります。変数名にカーソルを合わせて型を確認します。これが祝福ではなく呪いである場合は、変数を明示的に入力する方法に戻ります。UniqueWordsList<string>IList<string>UniqueURLsIEnumerable<string>varvar

于 2009-07-16T20:39:52.327 に答える
0

UniqueURL の種類は何ですか? .Count はプロパティではなくメソッドのようです。

于 2009-07-16T20:40:39.033 に答える
0

作業しているオブジェクトのタイプを知らなければ、確実に言うことは困難です。UniqueURLs には Count プロパティがありますか、それとも Count() 拡張メソッドしかありませんか?

于 2009-07-16T20:40:54.073 に答える
0

あなたの UniqueURLs-collection は ICollection または派生物ではなく IEnumerable であり、Count プロパティを持っていないと思われます。Enumerable.Count-extension メソッドを呼び出しています。括弧を使用すると問題ありません。

if (i<UniqueURLs.Count()) {rURLs[i] = UniqueURLs[i];}
于 2009-07-16T20:41:12.543 に答える
0

解決しました。ありがとう、メソッド .Count() には括弧が必要でした。必ずしも必要ではない理由をまだ完全には理解していません。

Jon Skeet、ありがとう、宣言が正確に何であるか理解できないと思いますか? 割り当てられた実際の値が必要ですか? これらは外部ソースから取得されますが、文字列です。

わかった!ありがとう。(()は少なくとも。)

違いは次のとおりです。

メソッドとして宣言...

public class UniqueWords {
  public int Count() {
    // Code to get the count
  }
}

は括弧で使用されます:

if (i < UniqueWords.Count()) {}

プロパティとして宣言されている場合...

public class UniqueWords {
  public int Count {
    get {
        // code to get the count
    }
  }
}

は括弧なしで使用されます:

if (i < UniqueWords.Count) {}

したがって、メソッドの場合は括弧を使用します。プロパティの場合は使用しません。

于 2009-07-17T01:48:34.843 に答える