Возможный перегрузить объединяющий пустой указатель оператор?

41
задан Peter Duniho 29 June 2019 в 18:55
поделиться

4 ответа

Хороший вопрос! Это не перечислено так или иначе в список сверхзагружаемых и несверхзагружаемых операторов , и ничто не упоминается на страница .

оператора, Таким образом, я попробовал следующее:

public class TestClass
{
    public static TestClass operator ??(TestClass  test1, TestClass test2)
    {
        return test1;
    }
}

и я получаю ошибку "Сверхзагружаемый ожидаемый бинарный оператор". Таким образом, я сказал бы, что ответ, с.NET 3.5, нет.

30
ответ дан Simon 27 November 2019 в 00:51
поделиться

Согласно стандарт ECMA-334, не возможно перегрузиться?? оператор.

Точно так же Вы не можете перегрузить следующие операторы:

  • =
  • & &
  • ||
  • ?:
  • ?.
  • проверил
  • , снял флажок
  • новый
  • , typeof
  • как [1 110]
14
ответ дан Peter Duniho 27 November 2019 в 00:51
поделиться

Простой ответ: Никакой

принципы разработки C# не позволяют оператор, перегружающий ту семантику изменения языка. Поэтому сложные операторы, такие как составное присвоение, тернарный оператор и... не могут быть перегружены.

7
ответ дан Mehrdad Afshari 27 November 2019 в 00:51
поделиться

Если кто-то здесь ищет решение, ближайшим примером может быть это

return instance.MyValue != null ? instance : new MyClass("Default");
-2
ответ дан 27 November 2019 в 00:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: