Хороший вопрос! Это не перечислено так или иначе в список сверхзагружаемых и несверхзагружаемых операторов , и ничто не упоминается на страница .
оператора, Таким образом, я попробовал следующее:
public class TestClass
{
public static TestClass operator ??(TestClass test1, TestClass test2)
{
return test1;
}
}
и я получаю ошибку "Сверхзагружаемый ожидаемый бинарный оператор". Таким образом, я сказал бы, что ответ, с.NET 3.5, нет.
Согласно стандарт ECMA-334, не возможно перегрузиться?? оператор.
Точно так же Вы не можете перегрузить следующие операторы:
Простой ответ: Никакой
принципы разработки C# не позволяют оператор, перегружающий ту семантику изменения языка. Поэтому сложные операторы, такие как составное присвоение, тернарный оператор и... не могут быть перегружены.
Если кто-то здесь ищет решение, ближайшим примером может быть это
return instance.MyValue != null ? instance : new MyClass("Default");