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

C# 自动将参数转换为已知类型,c#,parameters,types,C#,Parameters,Types,我有一个方法,它接受数量可变的字符串参数。问题在于,参数来源于各种不同的类型。这意味着在将所有类型传递给方法时,需要显式地将它们转换为字符串(使用convert)。该方法是否可以隐式地自动将参数(无论类型如何)转换为字符串?最简单的方法: string.Format("{0}", param); 可以使用对象数组而不是字符串数组。这就是它适合的地方 public string MyFunction(params object[] someobjects) { var asstring

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

最简单的方法:

string.Format("{0}", param);

可以使用对象数组而不是字符串数组。这就是它适合的地方

public string MyFunction(params object[] someobjects)
{
     var asstrings = someobjects.Select(o => (o??"").ToString());
     // for example
     return string.Join(", ", asstrings.ToArray());
}

对于.NET 4.0,您也可以删除
.ToArray()
调用

如果您可以更改方法,我建议您传递对象数组而不是字符串。然后在里面进行字符串转换

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

你不能把
object[]
而不是
string[]
传入吗?你能给我们方法签名和调用来澄清一下吗?为什么要使用Convert?为什么不直接调用ToString()?1.ToString()和int i=1;i、 返回正确的值。不确定问题出在哪里。我听说
string.Format
不是将一个对象转换为字符串的最简单方法。至少不适用于CLR。在适用的情况下,将此方法与重写
ToString()
(在对象上)结合使用。@slugster连接只是一个示例使用。LINQ Select是您误解我的关键所在-我不是在评论连接,我只是在提到OP应该使用您的方法,并在适用的情况下覆盖默认的
ToString()
,以获得字符串格式的对象的适当表示(否则,对于许多对象,它们只会以对象的类型名结束)。