c# - 是否可以将元素直接转换为数组?

标签 c# casting

有没有办法将 T 的单个对象转换为 T[]

将单个 string 传递给需要 string[] 的函数时,将使用它的示例

例子

void ExistingMethod(string[] sa);
void main()
{
  string s;
  ExistingMethod(s); //<= problem is there a syntax that allows this type of cast?
}

对这样的解决方案不感兴趣

string [] singleElementArray = new string[1];
singleElementArray[0] = s;
ExistingMethod(singleElementArray)

我正在查看 C# 是否允许这种类型的转换。

我以为我看到了一种 Java 允许它的方式,只需像这样用 [] 包装 ([s]) 即可。 C#有这种语法吗?

注意,对创建 1 的数组并分配它不感兴趣......

最佳答案

更改 foo(string[] sa)foo(params string[] sa) .

params允许您放置一个采用数组参数参数数组的数组,如下所示:foo(foo, bar, baz);而不是 foo(new[]{foo, bar, baz});

或者你可以做 .Arr<T>(this T obj)函数,返回 T[] .像这样:

public static T[] Arr<T>(this T obj)
{
return new[]{ obj };
}

然后像这样使用它:

foo(obj.Arr());

关于c# - 是否可以将元素直接转换为数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14781179/

相关文章:

c# - tabControl 中选项卡的初始化

java - 为什么 c 的向上转换是多余的?

typescript - 为什么 TypeScript 在分配给新的空数组时不暗示数组类型?

c++ - 从自定义类到内置类型的转换

c# - 在 C# 中转换为派生类和垃圾回收

c# - WPF DataTemplate 在卸载时重置一些依赖属性

c# - 使用 linq 将 CSV 读入数组或数据表的任何方法?

C#/.NET : Reporting subprocess state to the parent service

c# - 将数组加入 EF 查询

go - 如何将结构转换为基本类型,而不是 Go 中的直接类型?