您現在的位置是:首頁 > 動作武俠首頁動作武俠

[小雨學程式設計之C#] 18.1 資料型別轉換,資料類型別名

簡介NET公共類庫程式碼太長了,用C#中的別名代替

異常類存放在什麼名稱空間

[小雨學程式設計之C#] 18.1 資料型別轉換,資料類型別名

細心的小夥伴會發現,在我們編寫程式碼的過程中,當我們宣告一個整形變數輸入int的時候,會看到:

[小雨學程式設計之C#] 18.1 資料型別轉換,資料類型別名

這個位置是程式碼提示,不過……咦~這裡的int16、int32是啥?也是資料型別嗎,為啥沒學過。

我們的C#是區分程式碼大小寫的,但是有時候有些小夥伴會發現,在宣告字串型別的時候,既可以使用string也可以使用String,這兩種宣告方式有區別碼?

[小雨學程式設計之C#] 18.1 資料型別轉換,資料類型別名

之前在介紹Hello World這個控制檯應用程式的時候提到過,我們使用的Console是別人寫的程式碼,由於這樣的程式碼儲存在System這個名稱空間中,所以我們寫程式碼的時候,要在開頭填上using System,用以在我們程式碼執行之前先將我們要引用的程式碼提前載入在程式中,以供應我們隨時呼叫。

但是類似Console。WriteLine()這樣的程式碼是指令,它做了很多動作,比如開啟黑色對話方塊,並將對應內容顯示出來,這一連串動作也對應著程式碼,只是這樣的程式碼不是用C#寫的,它屬於。NET類庫中的內容。

就是說,我們使用Console。WriteLine()的時候,是用C#程式碼呼叫。NET類庫,這Console。WriteLine()不屬於C#!!!

我們知道,我們學習的C#是執行在。NET(dot net)之上的,這個。NET由三部分組成:

CLR:Common Language Runtime 執行環境(包括記憶體管理、程式碼執行、異常處理等)

程式設計工具:涵蓋了編碼和除錯需要的一切:包含:VisualStudio整合開發環境、。NET相容的編譯器如:C#、VB、JScript和託管的C++等

BCL:Base Class Library,基類庫,可提供給 。NET所有語言使用,這裡劃重點是“提供給 。NET所有語言使用”的哦 !

那麼也就是說,在我們使用Console。WriteLine()是在呼叫公共類庫的內容。這也就相當於,我們可以使用各種型號,各種螢幕,各種大小的電視機,但是所看的電視劇都是透過電視臺發出的訊號,而並不屬於某個電視。

我們C#編寫出的程式碼是不能直接執行的,需要編譯成中間程式碼,然後透過CLR來執行。

那麼也就是說,我們的Hello World這個程式是用C#和公共類庫混寫的,編譯的時候,是將C#程式碼和公共類庫程式碼一起編譯成了中間程式碼。

那麼這個又和我們所說的資料型別有什麼關係呢?讓我們簡單做個實驗,我們將程式碼第一段的using System去掉,然後再輸入Int看程式碼提示有啥變化沒:

[小雨學程式設計之C#] 18.1 資料型別轉換,資料類型別名

這時候我們發現,當去掉using System的時候,之前程式碼提示中的Int16、int32都不見了。

[小雨學程式設計之C#] 18.1 資料型別轉換,資料類型別名

而且大寫S開頭的String也報錯了。

這就說明我們看到的這些Int16、int32、String等都屬於System。

在using System存在的時候,我們寫的:

Int32 a;

String str;

都是在呼叫公共類庫來宣告變數。

那麼我們的C#也可以宣告變數,公共類庫也可以宣告變數,這不是重複了嘛?

在這裡直接給大家結論,其實我們使用的int、double、string都是C#在。NET公共類庫中的別名:

int是System。Int32的別名

double是System。Double的別名

string是System。String的別名

之所以我們可以直接使用Int32、String的原因是在程式碼的開頭我們引入了對應的名稱空間。

我們在寫C#程式碼的時候,是可以直接呼叫。NET公共類庫中的內容的,只是。NET公共類庫程式碼太長了,用C#中的別名代替。

但是要注意的一點是C#就其本身而言是一種程式語言,儘管它是用於生成面向。NET環境的程式碼,但它本身不是。NET的一部分。我們學習的資料型別,比如int、string等等,都屬於C#這門程式語言的,只是恰巧它們又是公共類庫對應資料型別的別名而已。

所以在我們的程式碼中宣告變數

int a=11;

System。Int32 a=11;

Int32 a=11;

這三句話是等價的。

string str;

String str;

System。String str;

也都是等價的

螢幕前的你,明白了嗎!

Top