最稳的pk10计划iphone 北京pk10计划手机软件 北京pk10数字的规律 超神手机版pk10软件 pk10北京赛车9码技巧 pk10四期倍投计划表 pk10极速赛车论坛 北京赛车冠军怎样选5码 北京赛车系统下载安装 pk10教程视频 北京pk10选号公式 北京赛车pk10赚钱技巧 北京赛车怎么提升概率 pk10技巧北京快三 北京pk10大小计划
VB.net 2010 視頻教程 VB.net 2010 視頻教程 VB.net 2010 視頻教程
SQL Server 2008 視頻教程 c#入門經典教程 Visual Basic從門到精通視頻教程
當前位置:
首頁 > 編程開發 > C#編程 >
  • C#教程之淺學CLR via C#筆記之類型轉換

  • 2019-08-16 20:45 來源:未知

我們都知道CLR最重要的一個特性就是類型安全,它在運行時就知道對象類型。

但我們會經常用到將一種類型轉換成另一種類型,CLR也允許將對象轉成他的實際類型,或者是它的基類型。

在C#中,支持隱士轉換成它的基類型。

類型轉換會用到以下方式:

復制代碼
 1 public class EntityBase
 2 {
 3     public int Id {get; set;}
 4 }
 5 public class User
 6 {
 7     public string Name {get; set;}
 8 }
 9 
10 .....
11 public static void Main()
12 {
13      var user = new User();
14      var entity = user;  // 隱士轉換
15      Object obj = user;
16      var user2 = (User) obj; // 顯示轉換
17      var user3 = obj as User; // as操作符轉換      
18 } 
復制代碼

其中 (User) obj 用了強制轉換,如果原始類型不是User的時候,會拋出異常。

obj as User 會先判斷類型,然后才會轉換,如果原始類型不是User的時候,會返回null,反而不會拋出異常。

有的時候為了處理異常,需要加一些判斷,比如使用如下判斷語句,先判斷類型是否正確:

1 if(obj is User){
2     var user2 = (User) obj;
3     // or
4     var user3 = obj as User;
5 }

這樣也可以實現,但是我們可以換另外一種給方式去寫,會更簡單。

因為對obj as User而言 會先判斷類型,然后才會轉換,那這樣的話就會跟外層的is語句有重復判斷的部分,在單條語句不會引起很大的性能方面的損耗,但是如果在一個比較大的循環語句中這樣大量的重復判斷,性能損耗將是一個很大的影響。

1 var user3 = obj as User;
2 if(user3 is null)
3 {
4      // ....
5 }

如上寫法,依據as語法的特性,判斷返回結果的方式。

pk10赛车冠军技巧
最稳的pk10计划iphone 北京pk10计划手机软件 北京pk10数字的规律 超神手机版pk10软件 pk10北京赛车9码技巧 pk10四期倍投计划表 pk10极速赛车论坛 北京赛车冠军怎样选5码 北京赛车系统下载安装 pk10教程视频 北京pk10选号公式 北京赛车pk10赚钱技巧 北京赛车怎么提升概率 pk10技巧北京快三 北京pk10大小计划
行星管理怎么赚钱吗 体育彩票7位数 浙江快乐彩遗漏期 捕鱼世界手机版下载 浙江11选5规律 3d组六8码 安徽快3均值 伯乐彩票苹果 pk10人工计划六码