我想在我的一个类中重新定义ToString()函数.
我写
public string ToString()
Run Code Online (Sandbox Code Playgroud)
......而且工作正常.但ReSharper告诉我要改变它
public new string ToString()
Run Code Online (Sandbox Code Playgroud)
要么
public override string ToString()
Run Code Online (Sandbox Code Playgroud)
有什么不同?为什么C#需要这样的东西?
Mar*_*ell 35
如果使用public string ToString()它,目前还不清楚你打算做什么.如果你的意思是改变ToStringvia多态的行为,那么override.你可以添加一个new ToString(),但这将是愚蠢的.不要那样做!
不同之处是当你这样做时会发生什么:
MyType t = new MyType();
object o = t;
Console.WriteLine(t.ToString());
Console.WriteLine(o.ToString());
Run Code Online (Sandbox Code Playgroud)
如果您override,两者都将输出您的新版本.如果你new,只有第一个会使用你的新版本; 第二个将使用原始实现.
我不认为我曾经见过任何人使用方法隐藏(又名new)ToString().