2012-10-12 71 views
1

我有下面的類定義:C#Get訪問是無法訪問

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訪問器是不可訪問的。

我在這裏失蹤了什麼?

+3

應該是'.Length' – Matthew

+0

數組有據我所知,「長度」屬性,而不是「計數」。 – Oded

+0

而不是'var'將'queryArray'定義爲'string []',IDE將幫助你完成這個:) {你應該在一個數組上使用'Length'而不是'Count'} – Rudu

回答

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

感謝您的回答...現在我覺得愚蠢...問題是,我沒有得到標準的'不能解決符號'錯誤,這將表明Count方法不存在陣列,讓我感到困惑。 – Marko

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

您可以Length property

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 

*/