型別轉換包括顯示轉換和隱式轉換,
在.net中型別轉換的基本規則如下:
is/as操作符,是c#中用於型別轉換的,提供了對型別相容性的判斷,從而使得型別轉換控制在安全的範疇,提供了靈活的型別轉換控制。
is的規則如下:
as的規則如下:
as -----------運算子用於在相容的引用型別之間執行某些型別的轉換 。 例如:
object obj = new object[3];
obj[0] = new class1();
obj[1] = "hello";
obj[2] = 10;
for (int i = 0; i < obj.length; i++)
if (s != null)
else
console.readline(); }
輸出結果:
not a string
hello
not a string
class base
} class derived : base
class program
}對於繼承類,允許把子類轉換成父類,但是不可以把父類轉換成子類,不同類之間,值型別不可轉換
is ---------------檢查物件是否與給定型別相容。
例如,下面的**可以確定物件是否為 myobject 型別的乙個例項,或者物件是否為從 myobject 派生的乙個型別:
if (obj is myobject)
1、如果所提供的表示式非空,並且所提供的物件可以強制轉換為所提供的型別而不會導致引發異常,則 is 表示式的計算結果將是 true。
2、如果已知表示式將始終是 true 或始終是 false,則 is 關鍵字將導致編譯時警告,但是,通常在執行時才計算型別相容性。
3、不能過載 is 運算子。
4、請注意,is 運算子只考慮引用轉換、裝箱轉換和取消裝箱轉換。不考慮其他轉換,如使用者定義的轉換。
5、在 is 運算子的左側不允許使用匿名方法。lambda 表示式屬於例外。
class myquicksort
else
console.readline(); }}
class class1
} class class2:class1
輸出結果:
yes
is/as操作符,提供了更加靈活的型別轉型方式,但是as操作符在執行效率上更勝一籌,我們在實際的程式設計中應該體會其異同,酌情量才。
C 的as, is和型別強制轉換
c 的 as,is 和 型別強制轉換 c 是一門強型別語言,一般情況下,我們最好避免將乙個型別強制轉換為其他型別,但有些時候難免要進行型別轉換。先想想究竟哪些操作可以進行型別轉換 先不考慮.net提供的parse 一般我們都有以下選擇 正確的選擇應該是盡可能地使用as操作符,因為它比強制轉型要安全,...
matlab中強制型別轉換 型別轉換
上一期提到 隱式型別強制轉換 implicit type coercion 隱式型別強制轉換會造成意外。為了避免出現意外,c 提供了明式型別轉換,允許程式設計師通過使用型別轉換操作 cast operator 主動轉換資料的型別。型別轉換操作也可直接稱為型別轉換 type conversion ty...
C 中的型別轉換
和goto語句一樣型別轉換的名聲似乎也是不那麼好。不過型別轉換在某些緊要關頭就顯得尤為重要,看看現有的c c 就知道,以至於你不理解轉換的作用,將是無法閱讀的。就像鈾,它能變成原子彈,但它也能用來發電,是災難還是福祉那就要看人類了。顯然型別轉換默默承受著這不公的一切。不管怎麼說c風格的型別轉換還是不...