泛型重载操作符比较

    class Program
    { static void Main(string[] args)
        {
            A a = new A();
            A b = new A();
            a.Age = 10;
            b.Age = 10;
            Console.WriteLine(a == b);//true

            Console.WriteLine("kaishi");
            MyGenirc<int> myGenirc1 = new MyGenirc<int>();
            MyGenirc<int> myGenirc2 = new MyGenirc<int>();
            myGenirc1.Age = 10;
            myGenirc2.Age = 10;
            Console.WriteLine(myGenirc1 == myGenirc2);//true
            Console.WriteLine(BiJiao(myGenirc1,myGenirc2));//false
            Console.ReadKey();
        }

        static bool BiJiao<T>(T a, T b) where T:class
        {
            return a == b;
        }

    }
    public class A
    {
        public int Age { get; set; }
        public static bool operator ==(A a1, A  a2)
        {
            if (a1.Age == a2.Age)
            {
                return true;
            }
            return false;
        }
        public static bool operator !=(A  a1, A a2)
        {
            if (a1.Age == a2.Age)
            {
                return false;
            }
            return true;
        }
    }


    public class MyGenirc<T>
    {
        public int Age { get; set; }
        public static bool operator ==(MyGenirc<T> a1, MyGenirc<T> a2)
        {
            if (a1.Age == a2.Age)
            {
                return true;
            }
            return false;
        }

        public static bool operator !=(MyGenirc<T> a1, MyGenirc<T> a2)
        {
            if (a1.Age == a2.Age)
            {
                return false;
            }
            return true;
        }
    }

第一执行结果为true是因为重载比较

第二个执行结果为true是因为执行了重载比较

第二个执行结果为false是因为编译器不知道,泛型实参是否进行了重载操作符==,比较得是引用

posted @ 2021-02-22 17:28  向往的人生  阅读(116)  评论(0编辑  收藏  举报