C# 隐式将对象强制转换为具有一个元素的数组。可能吗?

C# 隐式将对象强制转换为具有一个元素的数组。可能吗?,c#,c#-4.0,C#,C# 4.0,我可以从C#中的一个元素隐式创建数组吗 例如,我有这个方法 public void MyMethod(string[] arrayString) 在我的代码中的某个点上 string str = "myStr"; MyMethod(str) 当然,第二个linhe是一个错误,因为我正在传递一个字符串,而MyMethod需要一个字符串[]。 有没有干净的方法可以不使用 MyMethod(new string[] {str}) 如果使用数组,则可以: public void MyMethod(

我可以从C#中的一个元素隐式创建数组吗

例如,我有这个方法

public void MyMethod(string[] arrayString)
在我的代码中的某个点上

string str = "myStr";
MyMethod(str)
当然,第二个linhe是一个错误,因为我正在传递一个字符串,而MyMethod需要一个字符串[]。 有没有干净的方法可以不使用

MyMethod(new string[] {str})
如果使用数组,则可以:

public void MyMethod(params string[] arrayString)

string str = "myStr";
MyMethod(str)
如果使用数组,则可以:

public void MyMethod(params string[] arrayString)

string str = "myStr";
MyMethod(str)

扩展方法怎么样

public static T[] WrapInArray<T>(this T t)
{
    return new T[]{ t };
}
publicstatict[]WrapInArray(此T)
{
返回新的T[]{T};
}

扩展方法如何

public static T[] WrapInArray<T>(this T t)
{
    return new T[]{ t };
}
publicstatict[]WrapInArray(此T)
{
返回新的T[]{T};
}

我知道的唯一方法是重载该方法,这样您也可以

MyMethod(string)
{
    return MyMethod(new string[] {str});
}

您可能可以使用
params
数组来执行此操作,但如果您尝试传入一个字符串数组,而不是多个字符串,我不完全确定这将如何工作。

我知道的唯一方法是重载该方法,这样您也可以

MyMethod(string)
{
    return MyMethod(new string[] {str});
}

您可能可以使用
params
数组来执行此操作,但如果您尝试传入一个字符串数组,而不是多个字符串,我不完全确定这将如何工作。

我只需添加第二个重载
MyMethod

public void MyMethod(string str)
{
    MyMethod(new[]{str});
}

我只想添加第二个重载
MyMethod

public void MyMethod(string str)
{
    MyMethod(new[]{str});
}

为了完整起见,这里有另外两个选项,虽然肯定不推荐使用——我会使用
params
,就像在接受的答案中一样

MyMethod(Enumerable.Repeat(str, 1).ToArray());
我有时也会看到这一点,但除非您不知道数组初始值设定项,否则很难证明这一点:

T[] MakeArray<T>(params T[] elements)
{
    return elements;
}
或者,在这种情况下:

MyMethod(MakeArray(str));

为了完整起见,这里有另外两个选项,虽然肯定不推荐使用——我会使用
params
,就像在接受的答案中一样

MyMethod(Enumerable.Repeat(str, 1).ToArray());
我有时也会看到这一点,但除非您不知道数组初始值设定项,否则很难证明这一点:

T[] MakeArray<T>(params T[] elements)
{
    return elements;
}
或者,在这种情况下:

MyMethod(MakeArray(str));

您可以将数组传递给
params
参数,这样“它将如何工作”==透明。您可以将数组传递给
params
参数,这样“它将如何工作”==透明。