2015-03-25 2 views
-7

Мне нужно сделать оператор с более чем одним charecter, потому что я хочу, чтобы код был более читабельным и более ассоциативным. Например:Оператор с более чем одним charecter C#

public static bool operator !&(bool a, bool b) 
    { 
     return ((a == true && b == true) || (a == false && b = false)); 
    } 
+3

это невозможно, потому что это будет сделать код ** меньше ** читаемым. –

+0

Что значит больше одного персонажа? ваши операнды: 'bool' – ryanyuyu

+6

Как насчет' return a == b'? –

ответ

6

Вы можете только перегрузить фактические операторы C#, это не возможно, чтобы создать свой собственный.

Список перегружаемых операторов here

+0

Спасибо! Я не знал, что –

2

С # поддерживает операторы() функции только для известных операторов. Это невозможно для создания настраиваемого оператора.

См C# Спецификация Пункт 14.2.2 Оператор перегрузки:

В Перегружаемые унарные операторы:
+ - ! ~ ++ -- true false

В Перегружаемые бинарные операторы:
+ - */% & |^<< >> == != > < >= <=

только операторы, перечисленные выше может быть перегружена.

1

Не делайте этого.

Я понимаю, что это может быть не совсем то, что вы хотите, и что это не такой же, как оператор, но я бы рекомендовал использовать метод вместо этого, если возможно, - возможно, метод расширения:

public static bool IsBoolEquivalent(this bool a, bool b) 
{ 
    return ((a == true && b == true) || (a == false && b = false)); 
} 

Использование:

var myBool = true; 
var yourBool = false; 

var areTheyEquivalent = myBool.IsBoolEquivalent(yourBool); // returns false 
Смежные вопросы