Andrey Golubev Asked:2022-01-10 17:47:04 +0000 UTC2022-01-10 17:47:04 +0000 UTC 2022-01-10 17:47:04 +0000 UTC 为什么需要“字符串”?(即有一个问题,而不仅仅是“字符串”)? 772 在描述Object中,我看到该方法ToString()返回string?。问题出现了,为什么?毕竟string,它是一个引用类型,并且本身可以有一个值null。有什么区别,还是添加这个包装器只是为了强调该方法可以返回null什么? c# 2 个回答 Voted Best Answer Grundy 2022-01-10T18:19:37Z2022-01-10T18:19:37Z C# 8 添加了Nullable 引用类型。 使用指令时 #nullable enable 为了说明引用类型也可以取null,需要?类推加值Nullable类型。 VladD 2022-01-11T04:23:41Z2022-01-11T04:23:41Z 这是向后兼容的问题。 在旧版本的 C# 中,引用类型都是可以为空的(也就是说,它们可以“合法地”采用 value null)。然后定义了虚函数object.ToString()。 现在将定义更改为不可为空的版本为时已晚,因为之前编写的用户代码有权 return null,如果“根”虚函数更改其签名,许多人将不得不重写他们的代码。 不幸的是,那辆火车已经开走了。但是,是的,如果今天从头开始设计 C#,则方法的返回类型object.ToString()很可能是. string,而不是string?.
C# 8 添加了Nullable 引用类型。
使用指令时
为了说明引用类型也可以取
null,需要?类推加值Nullable类型。这是向后兼容的问题。
在旧版本的 C# 中,引用类型都是可以为空的(也就是说,它们可以“合法地”采用 value
null)。然后定义了虚函数object.ToString()。现在将定义更改为不可为空的版本为时已晚,因为之前编写的用户代码有权 return
null,如果“根”虚函数更改其签名,许多人将不得不重写他们的代码。不幸的是,那辆火车已经开走了。但是,是的,如果今天从头开始设计 C#,则方法的返回类型
object.ToString()很可能是.string,而不是string?.