讓C 中的0等於0

2021-08-30 01:36:31 字數 1057 閱讀 7819

[quote]作者 jonathan allen 譯者 王瑜珩 發布於 2023年6月1日 infoq[/quote]

c#對裝箱後的值型別支援的並不好。與vb不同,==這樣的基本算術比較符無法在裝箱後的型別上得到正確的結果,即使所比較的值屬於同一型別。

變數 型別 值

a int 0

b decimal 0.0

c decimal 0.0

boxa boxed int 0

boxb boxed decimal 0.0

boxc boxed decimal 0.0

dyna dynamic holding an int 0

dynb dynamic holding a decimal 0.0

dync dynamic holding a decimal 0.0

比較 c# vb

a==b true true

b==a true true

b==c true true

a.equals(b) false <--

b.equals(c) true <--

boxa == boxb false true

boxb == boxa false true

boxb == boxc false true

boxa.equals(boxb) false <--

boxb.equals(boxc) true <--

dyna == dynb true n/a

dynb == dyna true n/a

dynb == dync true n/a

從上表可以看出,在c#3與之前的版本中,即使兩個裝箱的值都是decimal型別的,得到的也是不相等的結果,但是decimal類的equals方法返回的卻是true。

幸好在c#4中可以避免這樣的問題。你需要將裝箱的值都轉換為dynamic型別然後再比較,這樣即使兩個值本來的型別不相同,也可以得到正確的結果。

console.writeline((dynamic)boxa == (dynamic)boxb);

cosin等於多少 cos0等於多少?

cos0等於1。cosx 鄰邊 斜邊,當x 0時,長的直角邊無限接近斜邊,所以cos0 1。cos是余弦 余弦函式 三角函式的一種。在直角三角形中,c 90 a的余弦是它的鄰邊比三角形的斜邊,即cosa b c,也可寫為cosa ac ab。余弦函式 f x cosx x r 當x 0時,長的直角邊...

shell中 0, 等的用法

表示傳遞給指令碼的個數 0 指令碼本身的名稱 當前shell的程序號 上乙個子程序的程序號 所有引數列表。如 用 括起來的情況 以 1 2 n 的形式輸出 所有引數。所有引數列表。如 用 括起來的情 況 以 1 2 n 的形式輸出所有引數。顯示最後命令的退出狀態,0 表示沒有錯誤 其它表示有錯誤 1...

C 中減去 0 的作用 0

標題沒有在賣萌 我們在日常研 chao 究 xi 大佬們的 時,可能會遇到減去字元 0 的情況,比如下圖 這種語法問題吧說簡單它不那麼簡單,畢竟不好理解 但說難吧也不難,其實就是讓 更簡潔更有逼格的途徑而已。說了那麼多屁話那麼這個減去零到底是幹啥的呢?它的作用就是減去0的ascii值 48。可以方便...