gpt4 book ai didi

C#:public new string ToString() VS public override string ToString()

转载 作者:IT王子 更新时间:2023-10-29 04:36:50 24 4
gpt4 key购买 nike

我想在我的一个类中重新定义 ToString() 函数。

我写了

public string ToString()

... 一切正常。但是 ReSharper 告诉我将其更改为

public new string ToString() 

public override string ToString()

有什么区别?为什么 C# 需要这样的东西?

最佳答案

如果您使用 public string ToString(),则不清楚您打算做什么。如果你想通过多态性改变 ToString 的行为,那么 override。您可以添加一个new ToString(),但这很愚蠢。不要那样做!

区别在于当你这样做时会发生什么:

MyType t = new MyType();
object o = t;
Console.WriteLine(t.ToString());
Console.WriteLine(o.ToString());

如果您覆盖,两者都将输出您的新版本。如果您new,只有第一个会使用您的新版本;第二个将使用原始实现。

我不认为我曾经见过有人在ToString() 上使用方法隐藏(又名new)。

关于C#:public new string ToString() VS public override string ToString(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1014853/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com