Изменить тип параметра string
и использовать пустую строку вместо:
static void SomeVoid(object obj1, string ojb2 = "") {
// Do Something Here
}
Компилятор жалуется, потому что значение параметра по умолчанию будет предоставляться во время компиляции в месте, где называется ваш метод. То есть когда вы пишете
Foo.SomeVoid(42);
Было бы компилировать в
Foo.SomeVoid(42, "");
, поэтому значение параметра по умолчанию должно быть постоянной величиной. Также тип параметра должен быть string
, так как все параметры ссылочного типа могут быть инициализированы только с константой null
. И object
является ссылочным типом.
Существует обходной путь для вас. Вы можете использовать параметр object
типа со значением по умолчанию null
и обрабатывать это значение вручную внутри метода:
static void SomeVoid(object obj1, object obj2 = null) {
if (obj2 == null)
// use default value
// Do Something Here
}
Я попробовал, что и тогда я имел две ошибки, одна из которых та же ошибка, я получаю, а другой говорит, что obj2 представляет объект типа. Значение параметра по умолчанию для ссылочного типа, отличного от строки, может быть инициализировано только нулевым значением. Я даже попробовал ojbect obj2 = (object) string.empty и evern object obj2 = (object) "". ничего не работает – Dimitri
это ошибка, которую я получаю с кодом, который вы предложили. – Dimitri
obj2 - тип объект.Значение параметра по умолчанию для ссылочного типа, отличного от строки, может быть инициализировано только нулем – Dimitri