亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

轉換空字符引用 ToString()

轉換空字符引用 ToString()

C#
12345678_0001 2022-10-23 16:48:44
在 C# .net 中,如果我使用 astring.Empty并調用.FirstOrDefault()它,打算獲取字符串的第一個字符,它將返回一個空字符引用 ie \0,而不是空字符 ie char?。然后強制轉換此 ToString() 的值與string.Empty因此,根據我的測試,以下陳述似乎可以解決:string.Empty.FirstOrDefault().ToString() != string.Empty((char?)null).ToString() == string.Emptystring.Empty.FirstOrDefault().ToString() == '\0'.ToString()只是我還是這感覺不一致?最初這對我來說并不明顯,我認為它string.Empty.FirstOrDefault().ToString()會解析為與string.Empty. 任何人都可以將我鏈接到更深入地涵蓋此問題的文檔嗎?
查看完整描述

2 回答

?
翻翻過去那場雪

TA貢獻2065條經驗 獲得超14個贊

string是一個IEnumerable<char>,所以FirstOrDefault()對一個空字符串返回default(char),不是default(char?)。

default(char)'\0'。

(幾乎)不可能編寫一個適用于引用類型但返回T?值類型的通用方法(這是您在這里所期望的)。


查看完整回答
反對 回復 2022-10-23
?
一只斗牛犬

TA貢獻1784條經驗 獲得超2個贊

  1. string.Empty=""是長度為的字符數組0

  2. string.Empty.FirstOrDefault()default(char)哪個是'\0' (如果源為空則FirstOrDefault<T>返回)default(T)

  3. string.Empty.FirstOrDefault().ToString()default(char).ToString()="\0"

  4. char?Nullable<char>,如果您檢查ToString()實現Nullable

public override string ToString()

{

  if (!this.hasValue)

    return "";

  return this.value.ToString();

}

這意味著,((char?)null).ToString()返回""(或string.Empty)。


查看完整回答
反對 回復 2022-10-23
  • 2 回答
  • 0 關注
  • 175 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號