C#編程自學之數據類型和變量三。本站提示廣大學習愛好者:(C#編程自學之數據類型和變量三)文章只能為提供參考,不一定能成為您想要的結果。以下是C#編程自學之數據類型和變量三正文
懂得了數據類型與變量的根本概念以後,我們來評論辯論數據類型的轉換與裝箱與拆箱!裝箱和撤消裝箱使我們可以或許同一地來考核類型體系,個中任何類型的值終究都可以按對象處置。
1、數據類型轉換
在編程時 我們有時刻會碰到將一個類型的變量轉換成另外一種數據類型,我們稱它為數據類型的轉換,C#數據類型的轉換有兩種方法以下:
1.默許平安的數據類型轉換
默許平安的數據類型轉換:我們稱之為 隱式的數據類型轉換,甚麼是隱式的數據類型轉換?隱式的數據類型轉換就是數據類型的低規模(參考C#數據類型與變量一中的數據類型的規模)向高規模的數據類型的轉換。例如:
int a = 200; //int 規模是 -2147483648~2147483647 long b = a; //long 規模是 -9223372036854775808~9223372036854775807 表現的整數規模更年夜 而且這個規模包括200 //所以我們以為這兩個數據類型轉換是默許正當的也稱隱式數據類型轉換 Console.WriteLine("b = "+b.ToString());
運轉成果其時會輸入:“b = 200”這段話啦!
2.強迫的數據類型轉換
懂得隱式數據類型的轉換後,我們在來懂得下強迫的類型轉換,強迫類型轉換就是,當不知足隱式數據類型轉換的規矩時,的一種數據類型轉換的辦法,強迫數據類型轉換必定會激發一些毛病,例如:
將高規模數據類型(簡稱高)轉換低規模數據類型(簡稱低)時,那末當“高”變量的值,超越了“低”數據類型的規模時,我們簡稱數據類型溢出。代碼以下:
long a = 3333333333; //long 規模是 -9223372036854775808~9223372036854775807 ->3333333333在這個規模中正當 int b = (int)a; //int 規模是 -2147483648~2147483647 -> 3333333333 超越了這個規模 所以招致數據類型溢出 Console.WriteLine("a =" + a.ToString()); Console.WriteLine("b ="+b.ToString());//類型溢出這裡會輸入一個異常年夜的正數
輸入成果以下:
2、裝箱與拆箱
懂得完根本數據類型的轉換後我們來看一下值類型與援用類型之間的轉換,我們稱為裝箱與拆箱。
1.裝箱
裝箱就將值類型轉換成援用類型:
int a = 10; object obj = a; //將值類型轉換援用類型,裝箱操作
在裝箱操作時,運轉時會在托管堆上分派一個空間,寄存a 中的10,並標記這塊空間的裝箱類型是int。
如圖:
2.拆箱
那拆箱就跟裝箱相反,就是將援用類型復原會值類型。
int a = 10; object obj = a; //將值類型轉換援用類型 裝箱 int b = (int)obj; //將援用類型轉換為值類型 拆箱
當拆箱時我們會將推中的10強迫類型轉換放到棧空間中(圖中代表int b)。
如圖
3.裝箱與拆箱的感化
當我須要顯示的辦法,分離來顯示 int float double類型的值到掌握台。普通我們的設計辦法以下:
class MyProgram { //用來打印int類型的值 public static void ShowInt(int a) { Console.WriteLine(" a ="+a.ToString()); } //用來打印float類型的值 public static void ShowFloat(float a) { Console.WriteLine(" a ="+a.ToString()); } //用來打印double類型的值 public static void ShowDouble(double a) { Console.WriteLine(" a ="+a.ToString()); } static void Main(string[] args) { int a = 10; ShowInt(a); float b = 2.2; ShowFloat(b); double c = 2.22; ShowDouble(c); } }
那末我們思慮一下,這個時刻我須要在支撐 string , short,char等等的類型顯示的時刻,我們是否是須要對每個類型都界說一個顯示的辦法? 此時我們在看看引入了裝箱與拆箱概念的辦法設計:
class MyProgram { //將參數類型改成object public static void ShowObject(object obj) { Console.WriteLine("obj ="+obj.ToString()); } static void Main(string[] args) { int a = 10; ShowObject(a); //int a 被裝箱 float b = 2.2;//float b 被裝箱 ShowObject(b); double c = 2.22;//double c 被裝箱 ShowObject(c); } }
如許我們未來不論須要擴大若干數據類型我們這個辦法都可以知足。
裝箱用於在渣滓收受接管堆中存儲值類型。裝箱是值類型到 object 類型或到此值類型所完成的任何接口類型的隱式轉換。對值類型裝箱會在堆平分配一個對象實例,並將該值復制到新的對象中。
關於C#數據類型與變量就引見到這,願望下面三篇文章對年夜家的進修有所贊助。