运算符不能应用于'Method Group'和'int'类型的操作数

时间:2013-10-22 19:33:00

标签: c# arrays for-loop

我正在尝试获取此字符串数组中的元素数量,但它不会让我从Count获取1。

string [] Quantitys = Program.RecieptList[i].ItemQuantitys.Split(new char[] {'*'});
for (int ii = 0; i <= Quantitys.Count - 1; ii++)
{

}

我收到一条错误消息,说明

  

运算符' - '不能应用于'方法组'和'Int'类型的操作数。

这样做的正确方法是什么?

3 个答案:

答案 0 :(得分:17)

对于数组,它应该是Length而不是Count

string [] Quantitys = Program.RecieptList[i].ItemQuantitys.Split(new char[] {'*'});
for (int ii = 0; i <= Quantitys.Length - 1; ii++)
{

}

有关MSDN的更多信息:Array.Length

此外,除非是故意的,否则ii应该只是i循环中的for

for (int i = 0; i <= Quantitys.Length - 1; i++)

尽管如下面的评论中所指出的那样,您也可以使用Quantitys.Count(),因为数组继承自IEnumerable<T>。但就个人而言,我个人更喜欢使用标准的Array.Length属性。

答案 1 :(得分:4)

数组具有Length属性,而不是Count属性,尽管它们执行相同的操作。您看到的错误是因为它找到了一个扩展方法Count(),但由于您未使用()调用它,因此无法使用。您可以将数组用作IList<T>,以便保留熟悉的Count属性名称。

此外,iii会让大多数人感到困惑(包括您自己,从它的外观来看:您在for行中都包含了这两者)。编程的标准是从数学中继承的,ijk,...用于索引变量名称。这将有效:

IList<string> Quantitys = Program.RecieptList[i].ItemQuantitys.Split(new char[] {'*'});
for (int j = 0; j <= Quantitys.Count - 1; j++)
{

}

答案 2 :(得分:0)

只需添加方括号()。 Count()现在也对我有用