代码之家  ›  专栏  ›  技术社区  ›  Sajith Dushmantha Samarathunga

获取错误“修饰符重写对此项无效”

c#
  •  0
  • Sajith Dushmantha Samarathunga  · 技术社区  · 5 年前

    public class Item
    {
        public string _name;
        public double _weight;
        public decimal _wholesalePrice;
        public int _quantity;
    
        public Item(string name, double weight, decimal wholesalePrice, int quantity)
        {
            _name = name;
            _weight = weight;
            _wholesalePrice = wholesalePrice;
            _quantity = quantity;
        }
    
        public static override bool operator ==(Item left, Item right)
        {
            if (left._name == right._name)
            {
                return true;
            }
            return false;
        }
    
        public static override bool operator !=(Item left,Item right)
        {
            return !(left == right);
        }
    }
    

    0 回复  |  直到 12 年前
        1
  •  2
  •   Glen Hughes    12 年前

    不能声明重写 您已经从父类派生了该类。也不能在静态方法上声明重写。您是否尝试同时删除覆盖?这对我来说很有用…

    public class Item
    {
        public string _name;
        public double _weight;
        public decimal _wholesalePrice;
        public int _quantity;
    
        public Item(string name, double weight, decimal wholesalePrice, int quantity)
        {
            _name = name;
            _weight = weight;
            _wholesalePrice = wholesalePrice;
            _quantity = quantity;
        }
    
        public static bool operator ==(Item left, Item right)
        {
            if (left._name == right._name)
            {
                return true;
            }
            return false;
        }
    
        public static bool operator !=(Item left, Item right)
        {
            return !(left == right);
        }
    }
    

        2
  •  1
  •   pdr    12 年前

    您正在从类对象派生类,该对象没有==或!=操作员。所以不能重写这些操作符。

    最后,请注意,重写和重载是两个非常不同的东西。重载是指具有相同名称但不同签名(例如,不同参数)的方法的多个定义。

        3
  •  0
  •   Jeppe Stig Nielsen    12 年前

    public static bool operator ==(Item left, Item right) 没有 override

    这叫接线员 ,不重写。

    ==

    xxx == yyy
    

    它使用 ==

    Meth(xxx, yyy)
    

    编译器将重载视为 Meth(Object, Object) Meth(String, String) ,请 Meth(Item, Item) xxx yyy

    static 而不是 ==