【发布时间】:2009-05-29 05:24:25
【问题描述】:
我一直希望能够使用下面的行,但 C# 编译器不让我这样做。对我来说,我想要什么似乎是显而易见且毫不含糊的。
myString.Trim({'[', ']'});
我可以通过以下方式实现我的目标:
myString.Trim(new char[]{'[', ']'});
所以我不会想知道有没有其他更接近第一种方法的方法?
【问题讨论】:
我一直希望能够使用下面的行,但 C# 编译器不让我这样做。对我来说,我想要什么似乎是显而易见且毫不含糊的。
myString.Trim({'[', ']'});
我可以通过以下方式实现我的目标:
myString.Trim(new char[]{'[', ']'});
所以我不会想知道有没有其他更接近第一种方法的方法?
【问题讨论】:
string.Trim(...) 方法实际上接受了一个params 参数,所以,你为什么不直接调用:
myString.Trim('[', ']');
【讨论】:
其他人专注于具体示例(使用参数数组这一事实是可行的方法),但您可能对 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);
...
}
【讨论】:
【讨论】:
你也可以试试这个:
myString.Trim("[]".ToCharArray());
【讨论】: