【发布时间】:2012-10-03 11:32:39
【问题描述】:
我有以下类定义:
public static string SplitString(string someText)
{
var queryArray = Regex.Split(someText, "\\s+(?=\\w+)");
foreach (var i in Enumerable.Range(0, queryArray.Count - 1)) {
// Some code
}
}
问题是 queryArray.Count 给了我以下错误:
无法在此上下文中使用属性“System.Array.Count”,因为 get 访问器不可访问。
我在这里错过了什么?
【问题讨论】:
-
据我所知,数组有一个
Length属性,而不是Count。 -
将
queryArray定义为string[]而不是var,IDE 将帮助您解决这个问题:) {您应该在数组上使用Length而不是Count} -
如前所述,数组上没有
Count属性。我要补充的是,如果你看到Count在数组上被调用,很可能它是一个方法(所以,它是myArray.Count()System.Linq 命名空间,因为它包含Count()的扩展方法。 -
我仍然不明白他为什么会收到此错误。当我尝试复制时,我得到一个
Cannot convert method group 'Count' to non-delegate type 'int'.。我不知道使用的用法,但由于Enumerable是在没有命名空间的情况下使用的,我猜想某处有一个using System.Linq;,使用时会产生另一个错误。 -
@Paciv 可能是单声道编译器,或者 csc.exe 的旧版本。该错误表明
.Count成员正在解析ICollection<T>.Count的显式实现,但我也无法使用 csc.exe (VS 2012) 重现该错误。我没有方便查看的单声道。
标签: c# arrays ienumerable enumerable