C#运算符重载

运算符重载方法里的参数一定要是两个么,参数类型和返回值类型一定要一样么?

运算符只能是对类型的重载,其中类型是不一定的。

就例如,你要将一个int类型加一个string类型(举例),那么就重载的两个参数就是不一样的。

返回值也可以不一样,就例如一个DateTime类型减去另一个DateTime类型,返回的则是一个TimeSpan。

参数的数量是不一定的,因为有些运算符不需要两个操作类型,例如--,++等。有些是需要两个参数的,例如+,-,+=,-+等。
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-11-12
1L 人家说的是运算符重载,不是方法重载

参数个数应该看你是重载哪种运算符吧,比如*号总得两个数吧,不然一个数怎么运算啊

返回类型好象是跟什么有限制

好久没玩过了
第2个回答  2009-11-12
参数的个数和类型不同都叫重载,返回值一样不一样无所谓,关键看参数
第3个回答  2009-11-14
3楼正解。
第4个回答  2009-11-12
都不一定

C# 那些可以重载 .那些不可以重载?
C#最常见的重载是构造函数重载,各种方法方法包括ToString()也可以重载,运算符+-*\/也可以重载。使用运算符重载时,必须用以下的方式声明:public static结果类型operator运算符(参数)这里operator是关键字,结果类型通常就是类本身或void型。operator关键字用于在类或结构声明中声明运算符。运算符声明可以采用...

C#中运算符重载的参数只能是两个吗?
a+b+c实际是你调用了两次+操作符,按照计算顺序,第一次的两个参数是a和b,第二次的参数是a+b的结果和c,所以每次是两个参数。———操作符默认的参数数量是不可以改变的,重载只能对其执行过程和返回参数进行改变。+ - * \/这些都是二元操作符,所以对这些操作符的重载只能用两个参数。其实简单...

C# 运算符重载:类方法static,operator+,成对定义(<、>, ==、!=)_百...
1 意思是,verb这个类本来是不能直接用>比较的.现在重载运算符.当编译器发现两个verb a 与 b 进行 > <操作的时候,自动套用这个方法.然后返回表达式的值为bool 2 实际上,可以>比较的可以是任何class, 比如 verb跟int,编译器会自动找合适的来套用.3 返回值不限于bool,可以是int string 或者其他任...

C#重载一个运算符的时候报这种错误怎么解决呢?
问题解析:==和!=这两个运算符依赖于 Equals 和 GetHashCode 这两个方法。 所以需要重写相等判断和获取哈希值的方法。解决方案:输入overri然后按Tab会出现一个菜单,选择会自动生成重写。public override bool Equals(object obj) { return base.Equals(obj);} public override int GetHashCode() { ...

C#中什么时候选择用重写和重载?为什么用?有什么区别?
重载表示改写该函数,比如重载+号运算符,让他具有乘法的功能,2+3=6 但是重载之后,他的运算优先级还是不会改变的,5-2+3=9 而重写表示完全改变这个函数,如果重写+号运算符,让他具有乘法的功能,2+3=6 同时,他的优先级你可以让他改变为最高,这样的话5-2+3=-1 :)...

c#中重载赋值操作符 我没办法重载+=和= 总是报错 上网查 说这两个...
首先,对于赋值的=是没法重载的,你需要去深入理解下“赋值”。其次,对于+=,它实际是=...+...的简写形式,虽然=不能重载,但+是可以重载的,官方的说法是:“不能直接重载 += 运算符,但用户定义的类型可重载 + 运算符”,也就是说你重载了+就自动可以使用+=了 参考资料:http:\/\/msdn.mic...

可否重载c#的nameof符号?
不可重载。在C# 6.0中,nameof()不是运算符,因此无法重载。C# 6的所有运算符列表中并未包括这个名字。可重载的运算符包括:+ - ! ~ ++ -- true false等,但不包括true和false,尽管它们在表达式中不显式使用,但因涉及条件表达式、条件运算符和条件逻辑运算,因此被视为运算符。可重载的二元...

c#中的静态表示什么?
C#要求所有的运算符重载都声明为public和static,这表示它们与它们的类或结构相关联,而不是与实例相关联,所以运算符重载的代码体不能访问非静态类成员,也不能访问this标识符;这是可以的,因为参数提供了运算符执行任务所需要知道的所有数据。学习C#静态函数及变量的一个精典例子与代码 (1)用于对静态...

C# 对象判空问题
public static bool operaor ==是运算符的重载。参数是是EntityBase,如果说是 EntityBase base1 = new EntityBase();EntityBase base2 = new EntityBase();...if(base1 == base2)没有任何问题 但是如果 EntityBase base2 = new EntityBaseSubClass();其中EntityBaseSubClass是EntityBase的子对象...

c#中equals的的问题?
首先你说比较两个字符串的值是否相等的时候不能用== 是错误的。==实际上是运算符重载,即String类中实现了Equals方法,两者等效。因为字符串操作太频繁了,实际上不把它做为一个引用类型。看着值类型就可以了。

相似回答
大家正在搜