否定运算符(!)的重载应具有哪种类型?
|
如果我在类中重载
!
运算符,应返回哪种类型?我在一本书中发现了这个(部分列出):
public class MyType {
public int IntField { get; set; }
public MyType(int intField) {
IntField = intField;
}
public static bool operator !(MyType mt) {
return (mt.IntField <= 0);
}
它确实可以编译,但是我希望!
运算符返回MyType
实例,例如
public static MyType operator !(MyType mt) {
var result = new MyType(-mt.IntField);
return result;
}
实际上,我希望编译器要求!
运算符返回MyType
。但事实并非如此。
那么...为什么why0ѭ运算符的返回类型不必为包含类型?您必须将返回类型++
或--
作为包含类型。
没有找到相关结果
已邀请:
1 个回复
春驹晴陪
好的,否定MyBool的规则是什么? True变为False,False变为True,Unknown保持Unknown:
在这种情况下,!的类型。操作员是MyBool。 当然,从C#2.0开始,我们就有了三值逻辑,形式为
,但是您可能想要更复杂的逻辑(或者您可能正在编写C#1.0代码)。 很难找到一个合理的例子,说明Foo的否定会导致酒吧的情况。某种“ monadic”工作流对象可能是一种可能的情况-给定类型的对象的求反是表示推迟执行求反的不同类型的对象。