繁体   English   中英

C#获取访问器无法访问

[英]C# Get accessor is inaccessible

我有以下类定义:

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

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
    }
}

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
      }
 }

您可以尝试使用Length property

当Select扩展为您提供索引时,为什么还要担心索引:

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

*/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM