Ответ 1
Вы можете сделать это:
public static void ShowAbout(Point location = new Point(),
bool stripSystemAssemblies = false,
bool reflectionOnly = false)
Из спецификации С# 4, раздел 10.6.1:
Выражение в аргументе по умолчанию должен быть одним из следующих:
- константное выражение
- выражение формы
new S()
, гдеS
- тип значения- выражение формы
default(S)
, гдеS
- тип значения
Итак, вы также можете использовать:
public static void ShowAbout(Point location = default(Point),
bool stripSystemAssemblies = false,
bool reflectionOnly = false)
EDIT: если вы хотите по умолчанию использовать значение, отличное от точки (0, 0), стоит знать о другом трюке:
public static void ShowAbout(Point? location = null
bool stripSystemAssemblies = false,
bool reflectionOnly = false)
{
// Default to point (1, 1) instead.
Point realLocation = location ?? new Point(1, 1);
...
}
Это также позволит вызывающим абонентам явно сказать: "вы выбираете значение по умолчанию", передавая нулевое значение.