当前位置:  开发笔记 > 编程语言 > 正文

如何在静态类中重写ToString?

如何解决《如何在静态类中重写ToString?》经验,为你挑选了1个好方法。

我有一个公共静态类,我希望有一个ToString()方法.

我已将其定义为公共静态字符串ToString(),但得到以下警告:

'Class.ToString()'隐藏继承的成员'object.ToString()'.要使当前成员覆盖该实现,请添加override关键字.否则添加新关键字.

如果我添加override关键字,我会收到此错误:

静态成员'Class.ToString()'不能标记为覆盖,虚拟或抽象

如何摆脱该警告并让我的静态类具有ToString()方法.

谢谢,
基思



1> Scott Dorman..:

是的,使用"new"修饰符将有效地使编译器警告静音,但您明确地使用静态方法隐藏实例方法.(这与覆盖方法不同.)通常你不想隐藏实例方法,除非有很好的理由,你真的不应该用静态方法隐藏它,因为它真的改变了调用的行为语义..NET中的每个对象都有一个名为ToString()的实例方法,该方法具有开发人员期望的特定行为; 通过使用新的静态方法隐藏该行为,您正在改变这种期望,这会导致很多混乱.

你有什么"穿线"的?静态类通常不保持内部状态,因此实际上不应该提供任何内部数据作为ToString()调用的逻辑输出.您可能需要重新考虑类设计或提供不同的方法名称,以更清楚地指示方法的目的而不隐藏实例ToString().

推荐阅读
wurtjq
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有