【发布时间】:2020-08-29 03:05:19
【问题描述】:
在 C# 中是否可以声明一个接收任意维度的锯齿状数组的函数?现在,如果我在一个接收一维数组的函数中传入一个锯齿状数组,它会给我一个错误:
void func<T>(T[] arr){
return;
}
double[][] x = new double[10][];
func<double>(x);
// Error: cannot convert from double[][] to double[]
有什么方法可以更改函数签名以使其同时接受一维数组和交错数组?该函数将仅执行适用于锯齿状数组和一维数组的操作。我真的不想使用重载,因为锯齿状数组的维度可能是未知的。
【问题讨论】:
-
您不需要更改函数签名。您错误地调用了该函数。尝试这样称呼它:
func(x)或func<double[]>(x)。 -
不能直接把一维数组转成锯齿状数组吗? int[][] jaggedArray = { oneDimArray };
-
你可以传入一个数组对象:
void func<T>(Array arr)因为数组对象可以表示任何数组类型和任何维度。文档:docs.microsoft.com/en-us/dotnet/api/… -
@Sweeper 或者让编译器确定正确的类型并直接写
func(x)
标签: c# arrays .net visual-studio