C#中as和is关键字
生活随笔
收集整理的這篇文章主要介紹了
C#中as和is关键字
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
一. as 運算符用于在兼容的引用類型之間執(zhí)行某些類型的轉換。例如:
static?void?Main(string[]?args){
????object[]?obj?=?new?object[3];
????obj[0]?=?new?class1();
????obj[1]?=?"hello";
????obj[2]?=?10;
????for?(int?i?=?0;?i?<?obj.Length;?i++)
????{
????????string?s?=?obj[i]?as?string;
????????if?(s?!=?null)
????????{
????????????Console.WriteLine(s);
????????}
????????else
????????{
????????????Console.WriteLine("not?a?string");
????????}
????}
????Console.ReadLine();
}
結果:
not a string
hello
not a string
?
class?Base{
????public?override?string?ToString()
????{
????????return?"Base";
????}
}
class?Derived?:?Base
{?}
class?Program
{
????static?void?Main()
????{
????????Derived?d?=?new?Derived();
????????Base?b?=?d?as?Base;
????????if?(b?!=?null)
????????{
????????????Console.WriteLine(b.ToString());
????????}
????}
}
對于繼承類,允許把子類轉換成父類,但是不可以把父類轉換成子類,不同類之間,值類型不可轉換。
二.is檢查對象是否與給定類型兼容。
例如,下面的代碼可以確定對象是否為 MyObject 類型的一個實例,或者對象是否為從 MyObject 派生的一個類型:
復制代碼 if (obj is MyObject) { }如果所提供的表達式非空,并且所提供的對象可以強制轉換為所提供的類型而不會導致引發(fā)異常,則 is 表達式的計算結果將是 true。
如果已知表達式將始終是 true 或始終是 false,則 is 關鍵字將導致編譯時警告,但是,通常在運行時才計算類型兼容性。
不能重載 is 運算符。
請注意,is 運算符只考慮引用轉換、裝箱轉換和取消裝箱轉換。不考慮其他轉換,如用戶定義的轉換。
在 is 運算符的左側不允許使用匿名方法。lambda 表達式屬于例外。
?
class?MyQuickSort{
????static?void?Main(string[]?args)
????{
????????class2?c2?=?new?class2();
????????if?(c2?is?class1)
????????{
????????????Console.WriteLine("Yes");
????????}
????????else
????????{
????????????Console.WriteLine("No");
????????}
????????Console.ReadLine();
????}
}
class?class1
{
????public?override?string?ToString()
????{
????????return?"";
????}
}
class?class2:class1
{
}
?
結果:Yes
?
?
轉載于:https://www.cnblogs.com/haiyang1985/archive/2009/03/12/1410023.html
總結
以上是生活随笔為你收集整理的C#中as和is关键字的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: client copy sap论坛上看到
- 下一篇: 【题解】Comet OJ 夏季欢乐赛(2