«<» ошибка оператора - PullRequest
2 голосов
/ 17 июля 2009

Почему выражение (i

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 () Я до сих пор не до конца понимаю, почему они не всегда нужны.

Джон Скит, спасибо, наверное, я тоже не понимаю, что именно за декларации? Вы хотели присвоить фактические значения? Они извлекаются из внешнего источника, но являются строками.

Я понял! Благодарю. (как минимум).

Ответы [ 7 ]

9 голосов
/ 17 июля 2009

не забывайте свои парены:

UniqueWords.Count()
7 голосов
/ 17 июля 2009

Вы абсолютно уверены, они оба строковые массивы?

Вы уверены, что один не является строковым массивом, а другой - IEnumerable<string>? Это, безусловно, объясняет это. (Рассматриваемой группой методов будет метод расширения Enumerable.Count().) Если это так, то вы не сможете использовать индексатор внутри блока.

Если это не так, пожалуйста, удалите любой посторонний код, но включите объявления, чтобы у нас была короткая, но полная программа для тестирования.

На самом деле, учитывая ваше редактирование, они не могут быть объявлены как строковые массивы - потому что вы присваиваете им значения List<string>. Я подозреваю, что вы обнаружите, что UniqueWords объявлен как List<string> или IList<string>, но UniqueURLs объявлен как IEnumerable<string>. Это может быть неявным, если вы используете var, хотя. Наведите указатель мыши на имя переменной, чтобы узнать тип, и если var является скорее проклятием, чем благословением, вернитесь к явному вводу переменных.

1 голос
/ 17 июля 2009

Вам нужны парены после имени метода, чтобы он не сравнивался с самим методом Count.

UniqueWords.Count()
0 голосов
/ 17 июля 2009

решаемая. спасибо, скобки были необходимо для метода .Count () я все еще делаю не до конца понимаю, почему они не всегда необходимо.

Джон Скит, спасибо, наверное, нет понять, что именно декларации либо тогда? Вы хотел фактические значения назначены? Они вытянуты с внешнего источник, но есть строки.

Я понял! Благодарю. (как минимум).

вот разница:

Объявлен как метод ...

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) {}

Так что, если это метод, используйте parens .. если это свойство, вы не делаете.

0 голосов
/ 17 июля 2009

Я подозреваю, что ваша коллекция UniqueURLs является IEnumerable, а не ICollection или производной, и у нее нет свойства Count. Вы вызываете метод Enumerable.Count-extension, используете круглые скобки и все будет в порядке:

if (i<UniqueURLs.Count()) {rURLs[i] = UniqueURLs[i];}
0 голосов
/ 17 июля 2009

Не зная типов объектов, с которыми вы работаете, трудно сказать наверняка. Есть ли в UniqueURL свойство Count или только метод расширения Count ()?

0 голосов
/ 17 июля 2009

Какой тип UniqueURL? Похоже, что .Count не свойство, а метод.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...