C#中as與is的用法(轉)
一、類型轉換
1.任何類型都可以轉換為其基類類型,用隱式轉換完成;
2.任何類型轉換為其派生類型時,必須進行顯示轉換。如:(類型名)對象名;
3.使用GetType可以取得任何對象的精確類型;
4.基本類型可以使用Convert類實現類型轉換;
5.除了string以外的其他類型都有Parse方法,用于將字符串類型轉換成對應的基本類型;
6.值類型和引用類型的轉換稱為裝箱(boxing)或拆箱(unboxing);
二、is/as示例
is轉換規則:
1. 檢查對象類型的兼容性,并返回結果true(false);
2.不會拋出異常;
3.如果對象為null,剛返回false;
示例: C#代碼
1. object o = "abc";
2. if (o is string) //執行第一次類型兼容性檢查
3. {
4. string s = (string)o; //執行第二次類型兼容性檢查,并轉換
5. MessageBox.Show("轉換成功!");
6. }
7. else
8. {
9. MessageBox.Show("轉換失敗!");
10. }
as轉換規則:
1.檢查對象類型的兼容性,并返回轉換結果,如果不兼容則返回null;
2.不會拋出異常;
3.如果結果判斷為空,則強制執行類型轉換將拋出NullReferenceException異常; 示例:
C#代碼
1. object o = "abc";
2. string s = o as string; //執行第一次類型兼容性檢查,并返回結果
3. if (s != null)
4. MessageBox.Show("轉換成功!");
5. else
6. MessageBox.Show("轉換失敗!");
注:as比is少執行一次兼容性檢查,性能可能會高一點點。
as是引用類型類型的轉換或者裝箱轉換,不能用與值類型的轉換。