我只是渴望知道,爲什麼identity ===運算符在c#中不可用?是否有任何不可用的原因。 什麼是在c#中的===操作符的equalant? 因爲我在一個地方看到身份運算符===比== ==運算符更快。 因爲==運算符暫時改變數據類型。爲什麼identity ===運算符在c#中不可用?
更新:===
和==
運營商之間的區別。 ===基本上不會將這兩個變量轉換爲臨時數據類型,而==等於暫時轉換轉換變量的數據類型
我只是渴望知道,爲什麼identity ===運算符在c#中不可用?是否有任何不可用的原因。 什麼是在c#中的===操作符的equalant? 因爲我在一個地方看到身份運算符===比== ==運算符更快。 因爲==運算符暫時改變數據類型。爲什麼identity ===運算符在c#中不可用?
更新:===
和==
運營商之間的區別。 ===基本上不會將這兩個變量轉換爲臨時數據類型,而==等於暫時轉換轉換變量的數據類型
因爲ReferenceEquals
存在。
因爲值類型會覆蓋相等性。
因爲C#不像JavaScript那樣沒有「truthy」和「falsy」值,隱式轉換已經很好的定義了。
簡而言之,它不存在,因爲它不像JavaScript那樣在C#中不需要。
這是由於PHP/JavaScript是一種動態類型語言,而C-Sharp是靜態類型的。
例如(在PHP)
if (5 == '5') ... // is true
if (5 === '5') ... // is false
而在C#
if (5 == '5') ... // compile error, incompatible types
編輯
要精心,很多的類型沒有隱式轉換(即字符串vs ints),這會導致編譯錯誤,但對於那些存在隱式轉換(ints vs float)的情況,執行類似類型的比較y你可以做。
float x = 1.0f;
int y = 1;
if (x == y) ... // is true
if (x == y && x.GetType() == y.GetType()) ... // is false
它不存在,因爲要麼沒有人請求它,要麼沒有花時間去實現(或兩者)並不重要。你希望運營商做什麼? –
我不明白爲什麼這個問題需要被投票... – MilkyWayJoe
你不需要===因爲c#是嚴格鍵入的。這意味着你不打算比較兩種數據類型的變量,而無需先將它們轉換爲通用類型。 – zeal