"<"运算符错误

Non*_*biz 2 c# loops compare operators method-group

为什么(i <UniqueWords.Count)表达式在for循环中有效,但返回"CS0019运算符'<'不能应用于'int'和'方法组'类型的操作数"错误放在我的if中?它们都是先前声明的字符串数组.

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];}
}
Run Code Online (Sandbox Code Playgroud)

编辑添加声明:

    List<string> Words = new List<string>();
    List<string> URLs = new List<string>();
Run Code Online (Sandbox Code Playgroud)

//元素添加如此....

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

        UniqueWords = Words.Distinct().ToList();
        UniqueURLs = URLs.Distinct().ToList();
Run Code Online (Sandbox Code Playgroud)

解决了.谢谢,方法需要括号.Count()我仍然不完全理解为什么它们并不总是必要的.

Jon Skeet,谢谢,我想我不明白究竟是什么声明呢?您想要分配实际值吗?它们是从外部源引出的,但却是字符串.

我知道了!谢谢.(至少是().)

Jas*_*son 9

不要忘记你的parens:

UniqueWords.Count()
Run Code Online (Sandbox Code Playgroud)


Jon*_*eet 7

你绝对相信它们都是字符串数组吗?

你确定一个不是字符串数组,另一个是IEnumerable<string>?这肯定会解释它.(有问题的方法组将是Enumerable.Count()扩展方法.)如果是这种情况,那么您将无法在块中使用索引器.

如果不是这样,请删除任何无关的代码但包括声明,以便我们有一个简短但完整的程序来测试.

事实上,鉴于您的编辑,它们不能被声明为字符串数组 - 因为您正在List<string>为它们分配值.我怀疑你会发现它UniqueWords被声明为List<string>IList<string>,但UniqueURLs被声明为IEnumerable<string>.如果您正在使用,这可能是隐含的var.将鼠标悬停在变量名称上以找出类型 - 如果var更多的是诅咒而不是祝福,请返回显式键入变量.