猿问

c# .net Equals()函数重载, 像下面这样写好吗?

帮忙评审一下下面这个写法

 class Product

    {

        public string Name;

        public DateTime ExpiryDate;

        public decimal Price;

        public string[] Sizes;


        public override bool Equals(object obj)

        {

            Product p2 = (Product)obj;

            if (Name == p2.Name && ExpiryDate == p2.ExpiryDate && Price == p2.Price)

            {

                for (int i = 0; i < Sizes.Length; i++)

                {

                    if (!Sizes[i].Equals(p2.Sizes[i]))

                        return false;

                }

                return true;

            }

            else

                return true;

        }



    }


慕森卡
浏览 865回答 2
2回答

慕婉清6462132

先判断obj is Product,以避免obj不是Product的情况。另外,可以把两个Product比较的逻辑放在双等运算符重载里面,Equals中调用。具体逻辑没有什么统一的标准,比如你可以比较所有字段,也可以在有id的情况只比较id,因业务而异。
随时随地看视频慕课网APP
我要回答