Значение по умолчанию необязательного параметра метода должно быть одним из следующих типов выражений:
- постоянное выражение;
- выражение формы new ValType(), где ValType - тип значения, такой как перечисление или структура;
- выражение формы по умолчанию (ValType), где ValType - тип значения.
Подробнее here
Типа постоянной декларация определяет тип элементов, которые вводят в декларации. Инициализатор постоянного локального или постоянного поля должен быть константным выражением, которое может быть неявно преобразовано в целевой тип.
Постоянное выражение - это выражение, которое может быть полностью оценено во время компиляции.
Следовательно, единственными возможными значениями для констант reference types
являются string
и null
.
Подробнее here
Однако, вы можете добиться этого, объявляющих перегрузок следующим образом:
private void txtBlockSettings(int _FontSize,FontFamily _FontFamily,FontWeight _FontWeight)
{
//Some stuff here
}
private void txtBlockSettings(int FontSize, FontWeight fontWeight)
{
txtBlockSettings(FontSize,new FontFamily("Consolas"), fontWeight);
}
private void txtBlockSettings(int FontSize, FontFamily family)
{
txtBlockSettings(FontSize, family, FontWeights.Normal);
}
private void txtBlockSettings(int FontSize)
{
txtBlockSettings(FontSize, new FontFamily("Consolas"), FontWeights.Normal);
}
Мне это нравится. И (я понимаю, что это старо, но), чтобы сделать еще один шаг, теперь вы можете использовать [нулевой оператор коалесцирования] (https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/operators/null-conditional-operator) для этого: '_FontFamily = _FontFamily ?? новый FontFamily («Консола»); – reasra