Зачем перегружать истинную и неверную вместо определения оператора Bool?C#

Место общения программистов C#
Ответить
Anonymous
 Зачем перегружать истинную и неверную вместо определения оператора Bool?

Сообщение Anonymous »

Я читал о перегрузке True и False в C#, и я думаю, что понимаю основное различие между этим и определением оператора Bool. Пример, который я вижу, - это нечто вроде: < /p>

public static bool operator true(Foo foo) {
return (foo.PropA > 0);
}
public static bool operator false(Foo foo) {
return (foo.PropA

Для меня это то же самое, что сказать: < /p>

public static implicit operator bool(Foo foo) {
return (foo.PropA > 0);
}
< /code>

Разница, насколько я могу судить, заключается в том, что, определяя TRUE и FALS false: < /p>

public static bool operator true(Foo foo) { return true; }
public static bool operator false(Foo foo) { return true; }
//or
public static bool operator true(Foo foo) { return false; }
public static bool operator false(Foo foo) { return false; }
< /code>

Я уверен, что есть причина, по которой это разрешено, но я просто не могу придумать, что это такое. Для меня, если вы хотите, чтобы объект мог быть преобразован в True или Fals Имеет смысл сделать это наоборот? < /p>

Спасибо < /p>

Подробнее здесь: https://stackoverflow.com/questions/267 ... l-operator
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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