如果我在类中超载!
运算符,它应该返回什么类型?在本书中,我发现这个(部分列表):否定运算符(!)的重载应具有哪种类型?
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
。但事实并非如此。
所以...为什么!
运算符的返回类型不必是包含类型?您做必须使返回类型++
或--
是包含类型。
这个例子很糟糕。这是从哪里来的? –
我不想诋毁这本书的作者,所以我不打算命名这本书。尽管我会*指出作者这个问题及其答案。 – comecme
如果作者出版了这本书,他必须准备好批评书中所表达的观点。这个例子很可怕,而且这本书的其余部分都很好。 – SolutionYogi