日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

C#系列三《C#数据类型与变量三》

發布時間:2023/12/15 C# 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C#系列三《C#数据类型与变量三》 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

??? 了解了數據類型與變量的基本概念之后,我們來討論數據類型的轉換與裝箱與拆箱!

?

一 數據類型轉換

????? 在編程時 我們有時候會遇到將一個類型的變量轉換成另一種數據類型,我們稱它為數據類型的轉換,C#數據類型的轉換有兩種方式如下:

???? 1.默認安全的數據類型轉換

????? 默認安全的數據類型轉換:我們稱之為 隱式的數據類型轉換,什么是隱式的數據類型轉換?隱式的數據類型轉換就是數據類型的低范圍(參考C#數據類型與變量一中的數據類型的范圍)向高范圍的數據類型的轉換。例如:

????

1???????????? int?a?=?200;?//int?范圍是?-2147483648~2147483647?
2?????????????long?b?=?a;??//long?范圍是?-9223372036854775808~9223372036854775807?表示的整數范圍更大?并且這個范圍包含200
3?????????????//所以我們認為這兩個數據類型轉換是默認合法的也稱隱式數據類型轉換
4?????????????Console.WriteLine("b?=?"+b.ToString());

?運行結果當時會輸出:“b = 200”這段話啦。。

?

???? 2.強制的數據類型轉換

????? 了解隱式數據類型的轉換后,我們在來了解下強制的類型轉換,強制類型轉換就是,當不滿足隱式數據類型轉換的規則時,的一種數據類型轉換的方法,強制數據類型轉換必然會引發一些錯誤,例如:

????? 將高范圍數據類型(簡稱高)轉換低范圍數據類型(簡稱低)時,那么當“高”變量的值,超出了“低”數據類型的范圍時,我們簡稱數據類型溢出。代碼如下:

?

1???????????? long?a?=?3333333333;?//long?范圍是?-9223372036854775808~9223372036854775807?->3333333333在這個范圍中合法
2?????????????int?b?=?(int)a;??//int?范圍是?-2147483648~2147483647??->?3333333333?超出了這個范圍?所以導致數據類型溢出
3?????????????Console.WriteLine("a?="?+?a.ToString());
4?????????????Console.WriteLine("b?="+b.ToString());//類型溢出這里會輸出一個非常大的負數

輸出結果如下:

二 裝箱與拆箱

???? 理解完基本數據類型的轉換后我們來看一下值類型與引用類型之間的轉換,我們稱為裝箱與拆箱。

???? 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);
????}
}

?

這樣我們將來不管需要擴展多少數據類型我們這個方法都可以滿足。

?

?OK 數據類型與變量部分結束。下一篇介紹一下 C#的運算符。

轉載于:https://www.cnblogs.com/doubleliang/archive/2011/05/11/2043721.html

總結

以上是生活随笔為你收集整理的C#系列三《C#数据类型与变量三》的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。