2009-05-29 18 views
0

我一直希望能夠使用下面的代碼行,但C#編譯器不會讓我。對我來說,看起來很明顯,並明確我想要什麼。在c中創建極簡主義數組#

myString.Trim({'[', ']'}); 

我可以用我的acheive目標:

myString.Trim(new char[]{'[', ']'}); 

所以我不知道死是有任何其他方式做到這一點更接近第一種方法?

回答

8

string.Trim(...)方法實際上是將params說法,那麼,你爲什麼不直接稱之爲:

myString.Trim('[', ']'); 
+1

如果你以前從來沒有使用過'params',那麼在IDE幫助中查找它是非常值得的... – jerryjvl 2009-05-29 05:31:53

+0

我總是忘記單引號來表示字符。微妙但重要。 – HitLikeAHammer 2009-05-29 05:36:32

3

這將工作太...

myString.Trim('[',']'); 

注意params聲明中defition的Trim,它讓你傳遞儘可能多的參數,並將它們作爲一個數組。

3

你也可以試試這個:

myString.Trim("[]".ToCharArray()); 
6

其他都集中在具體的例子(使用的事實,這是一個參數數組是要走的樣子),但你可能有興趣在C#3的隱打字。您可以採寫:

myString.Trim(new[] {'[', ']'}); 

相當一樣緊湊你之後,你仍然需要表達的「我要創建一個數組」,除非你正在編寫一個變量初始化的概念,但是數組的類型是從內容中推斷出來的。

大的用例,這是匿名類型:

var skeets = new[] { 
    new { Name="Jon", Age=32 }, 
    new { Name="Holly", Age=33 }, 
    new { Name="Tom", Age=5 }, 
    new { Name="Robin", Age=3 }, 
    new { Name="William", Age=3 } 
}; 

在這裏,您無法寫類型的名稱,因爲它不具有名稱(這是在C#中表達)。

另一點,使你的具體的例子 - 如果你要經常使用這個(即調用Trim方法常),你可能希望避免反正每次創建一個新的數組:

private static readonly char[] SquareBrackets = {'[', ']'}; 

public void Whatever() { 
    ... 
    foo = myString.Trim(SquareBrackets); 
    ... 
}