我一直希望能够使用下面的行,但C#编译器不会让我.对我而言,我想要的东西似乎显而易见且毫不含糊.
myString.Trim({'[', ']'});
Run Code Online (Sandbox Code Playgroud)
我可以使用以下方法实现我的目标:
myString.Trim(new char[]{'[', ']'});
Run Code Online (Sandbox Code Playgroud)
所以我不知道有没有其他方法可以做到更接近第一种方法?
该string.Trim(...)方法实际上是一个params参数,所以,为什么你不只是调用:
myString.Trim('[', ']');
Run Code Online (Sandbox Code Playgroud)
其他人专注于特定的例子(并使用它是一个参数数组的事实),但你可能对C#3的隐式类型感兴趣.你可以写:
myString.Trim(new[] {'[', ']'});
Run Code Online (Sandbox Code Playgroud)
没有相当的紧凑,你后,你仍然需要表达的"我要创建一个数组",除非你正在编写一个变量初始化的概念,但数组类型是从内容推断.
这个用例的大用途是匿名类型:
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 }
};
Run Code Online (Sandbox Code Playgroud)
在这里你不能写出类型的名称,因为它没有名称(在C#中可以表达).
关于你的具体例子的另一点 - 如果你经常使用它(即经常调用Trim方法),你可能想避免每次都创建一个新的数组:
private static readonly char[] SquareBrackets = {'[', ']'};
public void Whatever() {
...
foo = myString.Trim(SquareBrackets);
...
}
Run Code Online (Sandbox Code Playgroud)