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不工作。

c#方法编译错误的默认值:编译时常量

基本上不能。编译器必须支持该值以允许这种类型的使用(它本质上是一个常量)。这里我只使用null:

, Point? shifts = null)

:

if(shifts == null) shifts = MyClass.DefaultShifts;

From MSDN:

每个可选参数都有一个默认值作为其定义的一部分。如果没有为该参数发送参数,则使用默认值。默认值必须是下列表达式类型之一:

常量表达式;

new ValType()形式的表达式,其中ValType是一个值类型,如枚举或结构体;

形式为default(ValType)的表达式,其中ValType是一个值类型。

上面提到的案例中没有一个是你的,这就是为什么它对你不起作用!:)