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

歡迎訪問 生活随笔!

生活随笔

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

C#

C#的类型安全

發布時間:2024/1/17 C# 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C#的类型安全 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

類型安全應該算是CLR最重要的特性之一了,在運行時,CLR總是知道一個對象的類型。在C#中可以調用GetType()來返回調用對象的類型,并且由于GetType()繼承于System.Object對象,并且為非虛的方法,所以一個類型不可能通過重寫此方法而偽裝成另一種類型。

由于在開發的過程中,經常會需要將一個對象從一種類型轉換為其他的類型,所以CLR允許將一個對象強制轉換成它本身所引用的類型或派生其的基類型。一個對象向其父類的轉換CLR認為是一種安全的隱式轉換,不需要任何特殊的然而需要將一個對象轉換為其派生類型時,則需要進行顯示的轉換,因為這樣的轉換可能在運行時失敗。

下面來看一個例子:


?1namespace?LearnProject?{
?2????class?Program?{
?3????????
?4????????static?void?Main(string[]?args)
?5????????{
?6????????????//此類型轉換不需要顯示的進行,因為new返回的對象類型為Student
?7????????????//Person是Student的基類
?8????????????Person?student?=?new?Student();
?9????????????student.Eat();
10????????????//虛方法Work()在子類Student中被重寫?[多態的應用]
11????????????student.Work();
12????????????//使用Object類型的變量去保存Student對象的引用依然不需要進行任何顯示的轉換
13????????????//任何類型均是由System.Object派生而來
14????????????Object?objStudent?=?new?Student();
15
16????????????//將Object類型objStudent轉換成其派生類型Student則需要強制類型轉換
17????????????Student?studentObj?=?(Student)objStudent;
18
19????????????Program?p?=?new?Program();
20????????????//編譯器會自動檢測將要進行強制類型轉換的對象是否為目標類型的基類或者派生類型,如果不是則在編譯期出現錯誤
21????????????Student?studentProgram?=?(Student)p;
22
23????????????//然而此用顯式的轉換則能夠正常通過編輯,但是會在運行時拋出一個InvalidCastException異常
24????????????Object?obj?=?new?Program();
25????????????Student?studentObj2?=?(Student)obj;
26????????}
27????}
28}

?1??public?class?Person
?2?????{
?3?????????public?void?Eat()
?4?????????{
?5?????????????Console.WriteLine("吃飯");
?6?????????}
?7?????????public?virtual?void?Work()
?8?????????{
?9?????????????Console.WriteLine("工作");
10?????????}
11?????}
12?????public?class?Teacher?:?Person
13?????{
14?????????public?override?void?Work()
15?????????{
16?????????????Console.WriteLine("教書");
17?????????}
18?????}
19?????public?class?Student?:?Person
20?????{
21?????????public?override?void?Work()
22?????????{
23?????????????Console.WriteLine("沒有工作,需要上學");
24?????????}
25?????}

轉載于:https://www.cnblogs.com/zuking/p/3947401.html

總結

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

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