kid*_*won 5 .net c# parameters methods visual-studio
可能重复:
将空数组作为c#中可选参数的默认值传递
此代码在C#4.0中是正确的
static void SomeMethod(int x, int y = 5, int z = 7)
{
}
SomeMethod(1);
Run Code Online (Sandbox Code Playgroud)
但是当应用于数组时它会给我带来错误
private static void diagonalFill(int[,] a,int[] fillType = {0,-1},int[] diagFill = {-1,1})
{
}
diagonalFill(array);
Run Code Online (Sandbox Code Playgroud)
有人能告诉我正确的方法吗?10倍
默认参数值不可能与复杂的参考值一起使用。第一个可行,因为参数是存储在堆栈上并按值复制的原语。数组是复杂的引用值,因此必须先对其进行分配,然后才能作为参数出现。
编辑:
@Henk Holterman 的评论很受欢迎。我不直接了解堆栈或堆是否在此方面发挥作用,因此此信息要么是错误的,要么是误导性的。我知道的主要标准是只能使用基元类型。从这份文件来看,
默认值必须是以下类型的表达式之一:
常量表达式;
new ValType() 形式的表达式,其中 ValType 是值类型,例如枚举或结构;
default(ValType) 形式的表达式,其中 ValType 是值类型。
上面的“基元”列表链接已在 2010 年修改为“内置”类型。在这里能找到它。
| 归档时间: |
|
| 查看次数: |
139 次 |
| 最近记录: |