c#方法编译错误的默认值:编译时常量
本文关键字:编译 默认值 常量 方法 错误 | 更新日期: 2023-09-27 18:10:00
private static Vector2 DefaultMulFactors = new Vector2(0.5f, 0.5f);
private static Point DefaultShifts = new Point(0,0);
public static Vector2 Function(Vector2? mulFactors = MyClass.DefaultMulFactors , Point? shifts = MyClass.DefaultShifts )
{
...
return result;
}
为什么我的代码不接受静态值?如何将默认参数赋值给函数参数?事实上,Vector2? mulFactors = new Vector(0.2,0.3)
或Vector2? mulFactors = Vector2.Zero
不工作。
基本上不能。编译器必须支持该值以允许这种类型的使用(它本质上是一个常量)。这里我只使用null
:
, Point? shifts = null)
:
if(shifts == null) shifts = MyClass.DefaultShifts;
From MSDN:
每个可选参数都有一个默认值作为其定义的一部分。如果没有为该参数发送参数,则使用默认值。默认值必须是下列表达式类型之一:
常量表达式;
new ValType()形式的表达式,其中ValType是一个值类型,如枚举或结构体;
形式为default(ValType)的表达式,其中ValType是一个值类型。
上面提到的案例中没有一个是你的,这就是为什么它对你不起作用!:)