我有一个公共静态类,我希望有一个ToString()方法.
我已将其定义为公共静态字符串ToString(),但得到以下警告:
'Class.ToString()'隐藏继承的成员'object.ToString()'.要使当前成员覆盖该实现,请添加override关键字.否则添加新关键字.
如果我添加override关键字,我会收到此错误:
静态成员'Class.ToString()'不能标记为覆盖,虚拟或抽象
如何摆脱该警告并让我的静态类具有ToString()方法.
谢谢,
基思
是的,使用"new"修饰符将有效地使编译器警告静音,但您明确地使用静态方法隐藏实例方法.(这与覆盖方法不同.)通常你不想隐藏实例方法,除非有很好的理由,你真的不应该用静态方法隐藏它,因为它真的改变了调用的行为语义..NET中的每个对象都有一个名为ToString()的实例方法,该方法具有开发人员期望的特定行为; 通过使用新的静态方法隐藏该行为,您正在改变这种期望,这会导致很多混乱.
你有什么"穿线"的?静态类通常不保持内部状态,因此实际上不应该提供任何内部数据作为ToString()调用的逻辑输出.您可能需要重新考虑类设计或提供不同的方法名称,以更清楚地指示方法的目的而不隐藏实例ToString().