六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 51|回复: 0

C# ++运算符的重载

[复制链接]

升级  66%

9

主题

9

主题

9

主题

童生

Rank: 1

积分
33
 楼主| 发表于 2013-1-26 15:25:18 | 显示全部楼层 |阅读模式
很多语言都允许程序员使用运算符重载,尽管从编程的角度看,这没有其必要性,但是对于代码来讲可以提高它的可读性,带来许多方便之处。最简单的例子就是,我们用String类的时候,用“+”运算符直接实现字符串的连接,很方便很直观。虽然,Java不允许重载运算符,但是在它在类库级别上也重载了String类的“+”运算符。C#C++一样,提供了运算符重载机制。但是,它的要求要严格一些,这里提一下C#中自增运算符“++”的重载使用。
C++中,要体现前置++运算,总是要给其添加一个int类型的参数,尽管我们用不上它。在C#中我们只需也只可以写一种形式,看例子:
namespace Polymorphy

{

internal class Program

{

static void Main(string[] args)

{

AType instance = new AType(100);

Console.WriteLine(instance++.data);

Console.WriteLine((++instance).data);

Console.WriteLine(instance.data);

Console.ReadKey();

}

};

class AType

{

public int data;

public AType(int para)

{

this.data=para;

}

public static AType operator ++(AType para)

{

Console.WriteLine("执行重载运算符++");

return new AType(1+para.data);

}

};

}
执行结果:
执行重载运算符++"
100
执行重载运算符++"
102
102
分析:不管前置后置运算,程序总是执行重载运算符对应的函数,但是,后置执行以后把对象原来的值以临时变量的形式反馈回来。而前置,则直接执行函数即可。
说明:C#++运算符重载的要求:
1、 参数必须是一个,而且只能是包含它的类型,也就是它的所在类类型。
2、 返回值,必须是所在类类型或其派生类。
3、 所有重载的运算符必须是 public static的,这是编译时要求。
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表