나는 C#에서 true 및 false 오버로드에 대해 읽었으며이 문제와 bool 연산자 정의의 기본적인 차이점을 이해한다고 생각합니다. 말을 나에게bool 연산자를 정의하는 대신 true 및 false를 오버로드하는 이유는 무엇입니까?
public static bool operator true(Foo foo) {
return (foo.PropA > 0);
}
public static bool operator false(Foo foo) {
return (foo.PropA <= 0);
}
,이 동일합니다 : 나는 주위를 볼 수있는 예는 같은이
public static implicit operator bool(Foo foo) {
return (foo.PropA > 0);
}
의 차이를, 지금까지의 내가 말할 수있는 것은 사실과 거짓 정의하여 별도로, 당신은 진실과 거짓, 또는 둘 다 참이나 거짓 둘 다 객체 가질 수 있습니다
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; }
나는이 허용되는 이유가 확실 해요,하지만 난 그냥이 무엇인지 생각할 수 없다. 나에게 개체를 true 또는 false로 변환 할 수있게하려면 단일 불 연산자가 가장 적합합니다.
누구나 내게 다른 방식으로 이해하는 시나리오를 제공 할 수 있습니까?
감사합니다.
방금이 연산자를 찾았으며 몇 가지 테스트를 수행했습니다. 'if'는'true' 연산자만을 사용하고'if (! myObj)'는 전혀 가능하지 않으므로 모순되는'false' 연산자를 구현할 시점은 없습니다. 내가 놓친 게 있니? 'false' 연산자를 어떻게 사용할 수 있습니까? – ygoe