我有一个接受可变数量的字符串参数的方法。问题是参数起源于各种不同的类型。这意味着我需要将所有类型显式转换为字符串(使用Convert),因为我将它们传递给方法。该方法是否可以隐式执行此操作,自动将参数(无论类型)转换为字符串?
答案 0 :(得分:1)
public string MyFunction(params object[] someobjects)
{
var asstrings = someobjects.Select(o => (o??"").ToString());
// for example
return string.Join(", ", asstrings.ToArray());
}
对于.NET 4.0,您也可以放弃.ToArray()
调用
答案 1 :(得分:0)
最简单的方法:
string.Format("{0}", param);
答案 2 :(得分:0)
您可以使用对象数组而不是字符串数组。这就是它适合的地方。
答案 3 :(得分:0)
如果你可以改变方法,我会建议传递对象数组而不是字符串。然后在里面进行字符串转换。
public void MyMethod(param object[] objs)
{
String[] strings = objs.Select(o=>o.ToString()).ToArray();
// work with strings here
}
如果无法更改方法,可以执行静态方法,将对象传递给对象,将这些对象转换为字符串,然后传递给方法。
public static void MyMethod(param object[] objs)
{
String[] strings = objs.Select(o=>o.ToString()).ToArray();
MyStaticObject.MyMethod(strings);
}
或者如果它是实例方法,那么您可以改为使用Extesion方法。
public static void MyMethod(this MyObject t, param object[] objs)
{
String[] strings = objs.Select(o=>o.ToString()).ToArray();
t.MyMethod(strings);
}