【发布时间】:2016-08-02 19:45:19
【问题描述】:
我的班级看起来像这样:
public class Testclass
{
public int myValue;
}
在另一种情况下,我想简单地检查myValue 的值与0。
所以我会写:
Testclass tc = new Testclass();
tc.myValue = 13;
if (tc.myValue == 0)
{
}
如何简化这一点,以便Testclass 对象知道何时将其与布尔值进行比较? (或用作布尔值)来写:
Testclass tc = new Testclass();
tc.myValue = 13;
if (tc)
{
}
更准确地说,Testclass 将是库中包含的另一个方法的结果,因此代码如下所示:
anotherClass ac =new anotherClass();
// if (ac.AMethod().myValue == 0)
// should be
if (ac.AMethod())
{
}
AMethod 看起来像这样:
public Testclass AMethod()
{
return new Testclass();
}
[编辑于 2016-04-13]:
就像丹尼斯写的那样,我正在使用
public static implicit operator bool(TestClass value)
获取我班级的“布尔值”。为了更精确并更贴合我的实际应用程序,我想将签名更改为
public static implicit operator UInt64(FlexComDotNetFehler fehler)
public static implicit operator Boolean(FlexComDotNetFehler fehler)
所以FlexComDotNetFehler类的这两个方法在第一种情况下返回内部UInt64字段作为UInt64的真实表示,在第二种情况下作为Boolean值,这是真的,当UInt64值 > 0。
但是现在,当我编码时
FlexComDotNetFehler x;
FlexComDotNetFehler y;
if (x == y)
其中 x 和 y 都是 FlexComDotNetFehler 类型
编译器不知道它应该使用布尔运算符还是 UInt64 运算符。
所以我写了
if ((UInt64)x != (UInt64)y)
但是这两种类型转换是灰色的。
@Ɖiamond ǤeezeƦ:感谢您的重新格式化和编辑。但我想我现在是对的?
问候沃尔夫冈
顺便说一句,有没有可以测试格式及其输出的游乐场?以及如何向其他用户发送私信?
【问题讨论】: