我很困惑哪個過載string.Split(';')
正在解決;我不認爲3210是一個char數組嗎?爲什麼string.Split(';')有效,但string.Split(':',StringSplitOptions.RemoveEmptyEntries)不是?
但是,這是編譯好,但如果我嘗試添加第二個StringSplitOptions
參數沒有找到適當的過載。
我不喜歡不得不做new char []{';'}
是否可以避免?
我很困惑哪個過載string.Split(';')
正在解決;我不認爲3210是一個char數組嗎?爲什麼string.Split(';')有效,但string.Split(':',StringSplitOptions.RemoveEmptyEntries)不是?
但是,這是編譯好,但如果我嘗試添加第二個StringSplitOptions
參數沒有找到適當的過載。
我不喜歡不得不做new char []{';'}
是否可以避免?
在第一種情況下,你使用這個方法:
public string[] Split(params char[] separator)
在第二種情況:
public string[] Split(char[] separator, StringSplitOptions options)
正如你可以看到在第二種情況下,聲明有一點不同,所以你不能以這種方式傳遞參數。
如果你想以類似的方式來使用這種方法,您可以編寫自己的擴展方法:
public static class StringExtensions
{
public static string[] Split(this string s, char separator, StringSplitOptions options)
{
return s.Split(new[] { separator }, options);
}
//or
public static string[] Split(this string s, StringSplitOptions options, params char[] separator)
{
return s.Split(separator, options);
}
}
,並利用它們象下面這樣:
var s = "asdasd;asd;;";
var split = s.Split(StringSplitOptions.RemoveEmptyEntries, ';');
var split2 = s.Split(StringSplitOptions.RemoveEmptyEntries, ';', ',');
var split3 = s.Split(';', StringSplitOptions.RemoveEmptyEntries);
我建議你閱讀更多這個元素:
@Groo params關鍵字的解釋:
的PARAMS該文檔實際上並沒有解釋如何/當數組被創建的,所以這是可能是混亂。問題是params只是編譯器的一個暗示,你可以傳遞你的數組的項目,而不用明確地實例化數組。但是,每次調用Split方法時都會創建一個包含參數的新數組,無論您傳遞的是0,1還是多個參數。此外,您仍然可以自己創建一個數組並將其傳遞給該方法,但這可以讓編譯器爲您完成。
謝謝。你會添加一些關於'params'在這裏做些什麼的信息,以便對未來做出更全面的回答?簡介是好的:) –
我已經添加了鏈接,您可以在其中找到有關此元素的更多信息。我不會詳細說明這個主題,因爲它是一個具有相應文檔的簡單語言元素。 –
@ Mr.Boy:'params'的文檔實際上並不能解釋*數組的創建方式/時間,所以這可能是令人困惑的。問題是'params'只是編譯器的一個提示,即你可以傳遞你的數組的項目,而不用顯式地實例化數組。但是,每次調用「Split」方法時都會創建一個包含參數的新數組,無論您傳遞的是0,1還是多個參數。此外,您仍然可以自己創建一個數組並將其傳遞給該方法,但這可以讓編譯器爲您完成。 – Groo
的String.Split()
的first overload已參數定義爲
PARAMS炭[]隔板
這意味着可以通過任何數量的char
參數和它的工作:
someString.Split('1', '2', '3');
// or just one separator
someString.Split(';');
的second overload是不同的,它定義了這樣
炭[]分離器參數,StringSplitOptions選項
通知,沒有params
。這需要你通過char[]
參數:
someString.Split(new[] {'1', '2', '3'}, StringSplitOptions.None);
// or just one separator
someString.Split(new[] {';'}, StringSplitOptions.None);
它** **是一個*字符數組*:'斯普利特(PARAMS的char []值)' –
什麼是 'PARAMS' 關鍵字表示 - 怎麼樣了; 「數組?爲什麼第二版不適用? –
至少,你可以做'new [] {';' }'。 –