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

ica*_*tan 1 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;
}
Run Code Online (Sandbox Code Playgroud)

为什么我的代码不接受我的静态值?如何为我的函数参数指定默认参数?确实Vector2? mulFactors = new Vector(0.2,0.3)Vector2? mulFactors = Vector2.Zero不起作用.

Mar*_*ell 6

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

, Point? shifts = null)
Run Code Online (Sandbox Code Playgroud)

然后:

if(shifts == null) shifts = MyClass.DefaultShifts;
Run Code Online (Sandbox Code Playgroud)

  • 甚至更短的'班次=班次?MyClass.DefaultShifts;` (6认同)