日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

C#中数据类型的安全转换(is,as)

發布時間:2025/3/21 C# 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C#中数据类型的安全转换(is,as) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

原文?C#中數據類型的安全轉換(is,as)

下面代碼中,不能裝箱,在強制類型轉換時出錯,因為之前 c 是 class 類型,而卻要把它轉換為 int 類型,這是不可以的。雖然編譯器能通過編譯,但是 runtime 在運行時會拋出?InvalidCastException 異常。

?

1 2 3 4 Circle c =?new?Circle(8);? object?o = c;???// 本條語句正確,但是不會裝箱,因為裝箱是從棧到堆,需要的是值類型,而 c 是引用類型? int?i = (int)o;?// 編譯成功?? ????????????????// 編譯器編譯通過,但是運行時 runtime 會拋出一個 InvalidCastException?

?

??is 和 as 是 C# 提供的以安全的方式執行類型強制轉換的操作符,用法如下。

? ? ? ??is?操作符驗證對象的類型是不是自己希望的。

?

1 2 3 4 5 6 WrappedInt wi =?new?WrappedInt();? object?o = wi;? if?(o?is?WrappedInt)? {? ????WrappedInt temp = (WrappedInt)o;????// 轉型是安全的,o 已確定是一個 WrappedInt? }?

?

?  as?操作符取一個對象和一個類型作為其左邊和右邊的操作數。

  runtime 會嘗試將對象轉換成指定的類型,若轉換成功,就返回轉換成功后的結果給 temp,如果轉換失敗,返回?null?給 temp。

?

1 2 3 4 5 6 7 WrappedInt wi =?new?WrappedInt();? object?o = wi;? WrappedInt temp = o?as?WrappedInt;????// 轉型是安全的,o 已確定是一個 WrappedInt? if?(temp !=?null)? {? ????// 只有轉換成功,這里的代碼才能被執行? }?

?

沒有整理與歸納的知識,一文不值!高度概括與梳理的知識,才是自己真正的知識與技能。 永遠不要讓自己的自由、好奇、充滿創造力的想法被現實的框架所束縛,讓創造力自由成長吧! 多花時間,關心他(她)人,正如別人所關心你的。理想的騰飛與實現,沒有別人的支持與幫助,是萬萬不能的。

本文轉自wenglabs博客園博客,原文鏈接:https://yq.aliyun.com/articles/new?spm=a2c4e.11155435.0.0.59a67bf7BTU06l,如需轉載請自行聯系原作者

總結

以上是生活随笔為你收集整理的C#中数据类型的安全转换(is,as)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。