C# ++运算符的重载

很多语言都允许程序员使用运算符重载,尽管从编程的角度看,这没有其必要性,但是对于代码来讲可以提高它的可读性,带来许多方便之处。最简单的例子就是,我们用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的,这是编译时要求。

你可能感兴趣的:(java,编程,String,C#,Class,语言)