9

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

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

}

我收到一条错误消息说明

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

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

4

3 回答 3

18

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属性。

于 2013-10-22T19:35:06.873 回答
6

只需添加括号()。Count() 现在也适用于我

于 2018-08-22T17:10:08.727 回答
4

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

此外,i并且ii会让大多数人感到困惑(包括您自己,从外观上看:您将两者都包含在您的for行中)。从数学继承而来的编程标准是i, j, k, ... 用于索引变量名称。这将起作用:

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

}
于 2013-10-22T19:38:07.810 回答