C 的型別轉換

2021-10-01 18:56:28 字數 1730 閱讀 8639

在程式中,進行型別轉換時常見的事,c#支援基本的強制型別轉換方法,例如

object obj1 =

newnewtype()

;newtype newvalue =

(newtype)obj1;

這樣強制轉換的時候,這個過程是不安全的,因此需要用try-catch語句進行保護,這樣一來,比較安全的**方式應如下所示:

object obj1 =

newnewtype();

newtype newvalue =

null;

trycatch (exception err)

但是上面的寫法在c#中已是過時的寫法,也是比較低效的寫法,比較高效且時尚的寫法是用as操作符,如下:

object obj1 =

newnewtype();

newtype newvalue = obj1 as newtype;

安全性:

as操作符不會做過的轉換操作,當需要轉化物件的型別屬於轉換目標型別或者轉換目標型別的派生型別時,那麼此轉換操作才能成功,而且並不產生新的物件【當不成功的時候,會返回null】。因此用as進行型別轉換是安全的。

效率:當用as操作符進行型別轉換的時候,首先判斷當前物件的型別,當型別滿足要求後才進行轉換,而傳統的型別轉換方式,是用當前物件直接去轉換,而且為了保護轉換成功,要加上try-catch,所以,相對來說,as效率高點。

需要注意的是,不管是傳統的還是as操作符進行型別轉換之後,在使用之前,需要進行判斷轉換是否成功,如下:

if(newvalue != null)

但是,使用as操作符要注意以下幾點:

1、不用在型別之間進行型別轉化,即如下編寫就會出現編譯錯誤。

newtype newvalue =

newnewtype();

newtype1 newvalue = newvalue as newtype1;

2、不能應用在值型別資料,即不能如下寫(也會出現編譯錯誤)

object obj1 =

11;int nvalue = obj1 as

int;

對於1.,可以用傳統的型別轉換方式完成:

newtypeone newtestone = new newtypeone();

newtypetwo newtesttwo = (newtypetwo)newtestone;

要想使上面的操作正確完成,在原有型別中增加型別轉換操作符函式,即需要完成類似如下的**:

public calss newtypeone

}

對於2,在c#中可以使用is操作符,再加上老式的型別轉換操作,就可以安全完成轉換,要完成如上操作,正確的寫法如下:

object obj1 =

11;if(objtest is

int )

在c#中提供的很好的型別轉換方式總結為:

object => 已知引用型別——使用as操作符完成;

object => 已知值型別——先使用is操作符來進行判斷,再用型別強轉換方式進行轉換;

已知引用型別之間轉換——首先需要相應型別提供轉換函式,再用型別強轉換方式進行轉換;

已知值型別之間轉換——最好使用系統提供的conver類所涉及的靜態方法。

mysql型別轉換c 型別轉換 C 型別轉換

一 簡介 型別轉換 把資料從一種型別轉換另一種型別 我們要求等號兩邊參與運算子必須型別一致,如果不一致,滿足下列條件會發生自動型別轉換或者隱式型別轉換。1.兩種型別相容 例如 int和double 相容 都是數字型別 2.目標型別大於源型別 double int 顯示型別轉換 1.兩種型別相相容 i...

C 的型別轉換

2008 03 15 12 59 強制型別轉換容易引發錯誤,所以被認為是一種醜陋的語法。c 中有乙個觀念 醜陋的語法就應該用醜陋的方式表達。所以,c 的轉換操作符使用 x cast 這種一種繁瑣的形式。目的是為了讓你在使用型別轉換前三思而行,看看是不是又不需要型別轉換的方法或設計。更重要的是,c風格...

C 型別的轉換

型別的轉換c 中型別轉換 顯隱 的機制分為兩種 一 隱式轉換 implicit conversions 二 顯式轉換 explict conversions 隱式轉換不需要指明欲轉變的型別 顯式轉換明確地使用轉換運算子 cast 指定要轉換成哪一種型別。c 允許程式設計師如果對於溢位進行處理 che...