[英]Why does the signature of object.ToString state that it can return a null value
我在我們的項目中啟用可空特性時遇到了這個問題。
在 Net 5.0 中, object.ToString()
的簽名是
public virtual string? ToString ();
您的 ToString() 覆蓋不應返回 Empty 或空字符串。
那么為什么簽名聲明它可以? 我找不到任何相關信息。
但我的想法是
但是由於我們要將可空特性帶來的警告視為錯誤,現在我們必須添加!
或者在我們使用ToString
任何地方進行空檢查。
簽名保持原樣還有其他充分的理由嗎?
對於那些沒有閱讀上面提到的注釋並從他們的 ToString 方法返回 null 的人的向后可比性。
正是這樣:有現實世界的 ToString 實現會返回null
。 有關完整詳細信息,請參閱此討論。
您會注意到,如果您在 VS 中編寫自己的 ToString 方法,返回類型默認為string
而不是string?
但是——這是為了鼓勵您遵循這些准則。 如果您使用定義了自己的ToString
方法並使用 NRT 的類型,它可能還會返回string
,並且您不需要對其進行空檢查。
object.ToString()
返回string?
的事實string?
僅相關:
object
並且編譯器不知道其重寫的ToString
方法是否實際返回string?
或string
C c = new C();
string s1 = c.ToString(); // No warning
object o = c;
string s2 = o.ToString(); // Warning
public class C
{
public override string ToString() => "";
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.