gpt4 book ai didi

c# - 我们应该始终明确指定 ToString() 吗?

转载 作者:太空宇宙 更新时间:2023-11-03 17:15:04 25 4
gpt4 key购买 nike

我有一个自定义类结构如下。

public interface Stuff { }
public Thing : Stuff
{
public new String ToString() { return "That's the thing!"; }
}

然后,在我代码的其他部分,我有一个方法将 String 对象作为参数。第一行编译,而第二行不编译。我认为 ToString 在发送对象时默认被调用。 Stuff 继承自 Object 类,应该已经实现了 ToString(而且,在我的例子中,被 my 实现)。

Thing thing = new Thing();
MustHaveString(thing.ToString());
MustHaveString(thing);

我错过了什么?

最佳答案

您可能会因为调用 String.FormatConsole.WriteLine 以及调用 ToString< 的字符串连接运算符而感到困惑 隐含地。

不过,这不是一般规则。通常,如果您需要一个字符串,则需要显式调用 ToString 或进行一些其他转换。我不建议创建到 string 的隐式转换 - 它们可能带来的痛苦多于欢乐。

建议不要创建新的ToString 方法。相反,您应该覆盖 object 声明的对象。隐藏方法几乎总是一个坏主意;在某些情况下您确实想这样做(例如更改返回类型),但应尽可能避免这样做。

关于c# - 我们应该始终明确指定 ToString() 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17407534/

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