Значение по умолчанию в C # в методе - ошибка компиляции: константа времени компиляции - PullRequest
1 голос
/ 28 сентября 2011
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 ]

6 голосов
/ 28 сентября 2011

Вы не можете, в основном. Значение должно поддерживаться компилятором, чтобы разрешить такой тип использования (по сути это константа ). Я бы просто использовал null здесь:

, Point? shifts = null)

тогда:

if(shifts == null) shifts = MyClass.DefaultShifts;
4 голосов
/ 28 сентября 2011

Из MSDN:

Каждый необязательный параметр имеет значение по умолчанию как часть его определения. Если для этого параметра не передается аргумент, используется значение по умолчанию. Значением по умолчанию должен быть один из следующих типов выражений:

константное выражение;

выражение в форме new ValType (), где ValType является значением тип, такой как enum или struct;

выражение формы по умолчанию (ValType), где ValType является значением типа.

Ни один из упомянутых случаев не является вашим, поэтому он не работает для вас! :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...