Я хочу иметь необязательный параметр и установить его по умолчанию, которое я определяю, когда я это делаю:
private void Process(Foo f = new Foo())
{
}
Я получаю следующую ошибку (Foo
- класс):
'f' - тип Foo, параметр по умолчанию ссылочного типа, отличный от строки, может быть инициализирован только нулевым значением.
Если я изменяю Foo
на struct
, тогда он работает, но с единственным конструктором без параметров.
Я прочитал документацию, и в ней четко сказано, что я не могу этого сделать, но в ней не упоминается почему?. Почему это ограничение существует и почему string
исключается из этого? Почему значение необязательного параметра должно быть константой времени компиляции? Если бы это не было константой, то какими были бы побочные эффекты?