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

Nat*_*han 6 c# arrays for-loop

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

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

}
Run Code Online (Sandbox Code Playgroud)

我收到一条错误消息说明

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

什么是正确的方法来做到这一点?

val*_*rij 18

它应该Length不适Count用于数组:

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

}
Run Code Online (Sandbox Code Playgroud)

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

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

for (int i = 0; i <= Quantitys.Length - 1; i++)
Run Code Online (Sandbox Code Playgroud)

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

  • @Nathan:如果您习惯使用列表,则可以使用IEnumerable方法使用数组.事实上,你得到的错误是因为你忘记了Linq`Count()`方法的括号. (2认同)

KDW*_*olf 18

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

  • @JSTL“评论用于要求澄清或指出帖子中的问题。” (2认同)

Tim*_* S. 5

数组有一个Length属性,而不是一个Count属性,尽管它们做同样的事情。您看到的错误是因为Count()它找到了一个扩展方法,但无法完全使用,因为您没有使用(). 您可以使用数组作为IList<T>替代,以便保留熟悉的Count属性名称。

另外,iii会让大多数人感到困惑(包括你自己,从外观上看:你将两者都包含在你的for行中)。编程中的标准源自数学,索引变量名称是i, j, , ... 。k这将起作用:

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

}
Run Code Online (Sandbox Code Playgroud)