我剛剛發現,這個代碼不僅編譯,它似乎將任何空白字符串拆分。這是一個未公開的拆分方法覆蓋?
List<string> TableNames = Tables.Split().ToList();
但是它並沒有在智能感知表明,它不是在MSDN page。
這只是一個無證的覆蓋?因此使用它有危險嗎?
我剛剛發現,這個代碼不僅編譯,它似乎將任何空白字符串拆分。這是一個未公開的拆分方法覆蓋?
List<string> TableNames = Tables.Split().ToList();
但是它並沒有在智能感知表明,它不是在MSDN page。
這只是一個無證的覆蓋?因此使用它有危險嗎?
這不是一個覆蓋。在這種情況下,編譯器使用空參數將Split()
翻譯爲Split(char[])
。
拆分is defined作爲
public string[] Split(
params char[] separator
)
params
允許您指定一個可變數量的參數,包括沒有任何參數。如果沒有提供參數(如您的示例中所示),則separator
陣列將爲空。
從上面鏈接的MSDN頁面:
如果分離參數爲空或不包含的字符,空白字符被認爲是分隔符。
這就是爲什麼你看到字符串拆分爲空白。這只是默認的行爲,而不是無證的功能,所以你可以自由使用它,而不用擔心不尋常的副作用。那麼,除非.NET的未來版本中的默認行爲發生變化,但這對我來說似乎不太可能,因爲空白是合理的默認值。
如果分離參數爲Nothing 或不包含的字符,空白 字符被假定爲 定界符。空格符是由Unicode標準定義的 ,如果它們被傳遞給012.Char.IsWhiteSpace方法,則 返回true。
我個人呼籲記錄行爲。 :)
打了我十五秒。詛咒! (+1):) –
+1 Yep,'ToList()'是'System.Linq'的擴展方法。 – rsbarro
輝煌而迅速!這就是我喜歡StackOverflow的原因。 –