Неявное преобразование C# из нуляC#

Место общения программистов C#
Anonymous
Неявное преобразование C# из нуля

Сообщение Anonymous »

У меня есть структура, в которой я допускаю неявное преобразование из строки или StringBuilder.

Код: Выделить всё

public ref struct StringParam
{
private string s;
private StringBuilder sb;
public static implicit operator StringParam(string s)
{
return new StringParam { s = s };
}
public static implicit operator StringParam(StringBuilder sb)
{
return new StringParam { sb = sb };
}
public override string ToString()
{
return s ?? sb?.ToString();
}
}
Есть ли способ разрешить неявное приведение значения NULL без предварительного приведения значения NULL к строке или StringBuilder?
Когда я пытаюсь передать значение NULL без приведения его к строке, я получаю сообщение об ошибке CS0037: невозможно преобразовать значение NULL в «StringParam», поскольку это тип значения, не допускающий значения NULL. Если я удалю одно из неявных преобразований, эта ошибка исчезнет.
Я попробовал атрибут OverloadResolutionPriority для неявных операторов, но получил ошибку CS9262: невозможно использовать OverloadResolutionPriorityAttribute для этого элемента.
Я пытался создать неявный оператор StringParam(object o), который имел бы приоритет над строкой и StringBuilder, но Я получаю сообщение об ошибке CS0553: определяемые пользователем преобразования в базовый тип или из него запрещены.
Я попробовал добавить в класс "#nullable Enable" и сделал только одно из неявных преобразований обнуляемым, но это никак не повлияло на разрешение нуля.
Я не знаю, что еще попробовать.

Подробнее здесь: https://stackoverflow.com/questions/798 ... -from-null

Вернуться в «C#»