自动将参数转换为已知类型

时间:2011-06-23 09:54:47

标签: c# parameters types

我有一个接受可变数量的字符串参数的方法。问题是参数起源于各种不同的类型。这意味着我需要将所有类型显式转换为字符串(使用Convert),因为我将它们传递给方法。该方法是否可以隐式执行此操作,自动将参数(无论类型)转换为字符串?

4 个答案:

答案 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);
}