【发布时间】:2021-11-12 14:34:47
【问题描述】:
我在我们的项目中启用可空功能时遇到了这个问题。
在 Net 5.0 中,object.ToString() 的签名是
public virtual string? ToString ();
这是为什么呢? notes to Inheritors 偶数状态
您的 ToString() 覆盖不应返回 Empty 或空字符串。
那么为什么签名声明它可以呢?我找不到任何相关信息。
但我的想法是
- 那些没有阅读上述注释并从他们的 ToString 方法返回 null 的人的向后可比性。
- 让阅读过该笔记的人忽略它
但由于我们想将可空功能附带的警告视为错误,现在我们必须添加! 或在我们使用ToString 的任何地方进行空检查。
是否还有其他充分理由说明签名保持原样?
【问题讨论】:
-
"那些没有阅读上面提到的注释并从他们的 ToString 方法返回 null 的人的向后可比性。" -- 正是这样:有现实世界那里的 ToString 实现返回
null。您会注意到,如果您在 VS 中编写自己的 ToString 方法,则返回类型默认为string而不是string?- 这是为了鼓励您遵循指南。如果您使用定义了自己的ToString方法并使用NRT 的类型,它可能还会返回string,并且您不需要对其进行空检查。
标签: c# nullable nullable-reference-types