C#Get访问者无法访问

时间:2012-10-12 15:44:34

标签: c# arrays ienumerable enumerable

我有以下类定义:

 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访问器不可访问。

我在这里缺少什么?

4 个答案:

答案 0 :(得分:7)

您可以尝试使用Length属性:

public static string SplitString(string someText)
{
    var queryArray = Regex.Split(someText, "\\s+(?=\\w+)");
    foreach (var i in Enumerable.Range(0, queryArray.Length - 1)) {
        // Some code
    }
}

如果代码是这样编写的,那么你的代码可能会更具可读性:

public static string SplitString(string someText)
{
    var queryArray = Regex.Split(someText, "\\s+(?=\\w+)");
    for (var i = 0; i < queryArray.Length; i++) {
        // Some code
    }
}

或者像这样:

public static string SplitString(string someText)
{
    var queryArray = Regex.Split(someText, "\\s+(?=\\w+)");
    foreach (var item in queryArray) {
        // Some code
    }
}

答案 1 :(得分:1)

Regex.Split返回一个数组,该数组未定义Count属性。请改用Length

 public static string SplitString(string someText)
 {
      var queryArray = Regex.Split(someText, "\\s+(?=\\w+)");
      foreach (var i in Enumerable.Range(0, queryArray.Length - 1)) {
           // Some code
      }
 }

答案 2 :(得分:1)

您可以尝试使用Length property

答案 3 :(得分:0)

为什么在选择扩展程序为您提供索引时会担心索引:

var data = Regex.Split("someText other", "\\s+(?=\\w+)")
                .Select((itm, indexer) => string.Format("{0} is index {1}", itm, indexer));

/* Data has 2 strings in the list:

someText is index 0
other is index 1

*/
相关问题