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

时间:2011-09-28 11:15:09

标签: c# xna default-value

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不起作用。

2 个答案:

答案 0 :(得分:6)

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

, Point? shifts = null)

然后:

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

答案 1 :(得分:4)

来自MSDN:

  

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

     

一个常量表达式;

     

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

     

表单default(ValType),其中ValType是一个值   类型。

没有提及的案例是你的,这就是为什么它不适合你! :)