gpt4 book ai didi

c# - 为什么要重载 true 和 false 而不是定义 bool 运算符?

转载 作者:IT王子 更新时间:2023-10-29 04:49:13 25 4
gpt4 key购买 nike

我一直在阅读有关在 C# 中重载 true 和 false 的内容,我想我理解这与定义 bool 运算符之间的基本区别。我看到的例子是这样的:

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);
}

据我所知,不同之处在于,通过分别定义 true 和 false,您可以拥有一个既是 true 又是 false,或者既不是 true 也不是 false 的对象:

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,那么单个 bool 运算符最有意义。

谁能给我一个换种方式有意义的场景?

谢谢

最佳答案

作为the docs例如,重载 truefalse 旨在支持(可为空的)数据库类型(是/否、Y/N、0/1 等)。

当然,您可以不一致地定义它们,就像任何运算符一样。您有责任合理返回。编译器只要求两者都不要求或两者都不要求。

关于c# - 为什么要重载 true 和 false 而不是定义 bool 运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2671012/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com