c 資料的轉換操作

2021-05-28 14:49:37 字數 1665 閱讀 4272

1、轉換的型別

預定義的轉換:數字轉換(顯式轉換,隱式轉換),引用轉換(顯式轉換,隱式轉換),裝箱轉換,拆箱轉換

使用者自定義的轉換: 隱式轉換,顯示轉換

2、隱式/顯示轉換(強制轉換)的適用情況

對於預定義的型別,若從源型別到目標型別不會發生資料丟失,c#會自動將乙個資料型別轉換為另乙個資料型別,這種轉換就是隱式轉換。

若源型別的任意值在被轉換成目標型別時會丟失值,c#不會提供這兩種型別的自動轉換,如果希望對這樣的型別進行轉換,就必須使用顯式轉換,

其語法格式為 (目標型別)源表示式

3、引用轉換

(1)定義:接收源引用並返回乙個指向堆中同乙個位置的應用,但把引用標記為其他型別

(2)常見的隱式引用轉換

所有引用型別可被隱式轉換成object型別

任何型別可以隱式轉換到它繼承的介面

類可以隱式轉換到它繼承的鏈中的任何類,可以隱式轉換到它實現的任何介面

(3)常見的顯式引用轉換(乙個泛化引用型別轉換到乙個更具體的引用型別時發生)

從object型別到任何引用型別的轉換

從基類到其子類的轉換

4、裝箱轉換----值型別到引用型別的隱式轉換

示例:int i=12;   object oi=null;         oi=i;//對i裝箱,並把引用賦值給oi

系統對i進行裝箱的操作如下:@1,在堆上建立了int 型別的物件。@2,將i的值複製到int物件。@3,返回int物件的引用,並儲存到oi中。

5、拆箱轉換-----把裝箱後的物件轉回值型別的顯式轉換

int i=12; object oi=i;//裝箱i並把其引用賦值給oi

int j=(int)oi;//拆箱oi並把其物件的值賦值給j。嘗試拆箱乙個值為非原始型別時,會丟擲乙個invalidcastexception異常

6、使用者自定義轉換

語法:public static

implicit/explicit 

operator  targettype (sourcetype  identifier)

例如: public static implicit operator string(number n)

@1、public static 是必需的,implicit,explicit分別表明為隱式或顯式轉換   operator為關鍵字。

@2、只可以為類或結構定義使用者自定義轉換

@3、不能重新定義標準隱式或顯式轉換

7、is運算子-----檢查轉換是否成功

有些轉換的請求是不成功的,並會在執行時丟擲invalidcastexception異常。我們可用is運算子檢查轉換是否成功,從而避免盲目轉換

語法:   源表示式 is  目標型別

若源表示式可以通過引用,裝箱,拆箱轉換 轉換成目標型別,則運算子返回true。

8、as運算子-----類似於顯式轉換的功能

as運算子和強制轉換運算子相似,只是它不丟擲異常,若轉換失敗,它把目標引用設為null

語法: 源表示式  as  目標型別(必須為引用型別)

只能用於引用轉換和裝箱轉換

C 操作技巧的資料型別之間的轉換

我們在 vb 中的資料型別之間的轉換是非常容易的cstr,cint等等的函式,我們大家在使用的時候應該都已經是非常的清楚了,現在可以用c 做web應用了!這下 我們又多了一種語言的選擇,再加上確實有很多人對vb程式設計懷有很多的不理解 所以他們寧可使用c 進行程式設計,也有很多的同志立場不堅定!也想...

C 操作技巧的資料型別之間的轉換

我們在 vb 中的資料型別之間的轉換是非常容易的cstr,cint等等的函式,我們大家在使用的時候應該都已經 是非常的清楚了,現在可以用c 做web應用了!這下 我們又多了一種語言的選擇,再加上確實有很多人對 vb程式設計懷有很多的不理解 所以他們寧可使用c 進行程式設計,也有很多的同志立場不堅定!...

C 進製轉換操作(二)

一 將其他進製字串,轉換成十進位制 將指定進製的字串,轉換成十進位制 字串 進製數 public static int convertfromn string source,int frombase return r 例項 二進位制 console.writeline convertfromn 00...