學(xué)習(xí) C# 的第二天,今天將學(xué)習(xí)一下 C# 的變量以及它的基礎(chǔ)數(shù)據(jù)類(lèi)型的內(nèi)容。
首先回答一下上一篇文章所提到的兩個(gè)疑惑:
(1)一個(gè)程序中既然可以有多個(gè)命名空間和類(lèi),那么如何將它們聯(lián)系在一起?
(2)一個(gè)程序中命名多個(gè)命名空間和類(lèi),這樣的操作值得推薦嗎?
一個(gè)程序中有多個(gè)命名空間和類(lèi),也是一樣可以使用 ?using
?關(guān)鍵字來(lái)引用命名空間。?using
?關(guān)鍵字的使用要么是放在所有元素的前面,要么放在命名空間內(nèi)定義的所有元素之前。其他的命名空間的類(lèi)方法使用,可以通過(guò)類(lèi).方法名來(lái)調(diào)用。
至于第二個(gè)是否放在一起,這應(yīng)該是看個(gè)人習(xí)慣。筆者個(gè)人喜歡是拆分開(kāi)來(lái),一是讓程序看上去干凈明了,不會(huì)顯得混雜;第二整理起來(lái),也比較輕松一些。
一、變量
變量的定義
<data_type> <value_name>;
<data_type> <value_list>;
在 C# 中,每個(gè)變量都會(huì)有一個(gè)特定的類(lèi)型。因此,在聲明變量之前,就得先定義這個(gè)變量屬于什么數(shù)據(jù)類(lèi)型的。
變量可以一個(gè)一個(gè)定義,同時(shí)也是可以連續(xù)定義。如 value_list 就是由逗號(hào)隔開(kāi)的標(biāo)識(shí)符組成的。
int x, y, z;
char c, n;
float e, f;
連續(xù)定義的前提是,這些變量都是同屬于一個(gè)數(shù)據(jù)類(lèi)型的。
初始化賦值
C# 中在定義完數(shù)據(jù)類(lèi)型之后,就可以給變量賦值相應(yīng)類(lèi)型的值。
例如:
int x, y, z;
x = 1;
y = 2;
z = 3;
char c, n;
c = 'c';
n = 'n';
除了定義后在賦值的操作,可以直接在定義變量的類(lèi)型時(shí)候,同時(shí)賦予它變量值:
int x=1, y=2, z;
char c='c', n='n';
用戶輸入值
用戶可以通過(guò)? Console.ReadLine()
?方法來(lái)輸入值。不過(guò),這些值默認(rèn)都是屬于字符串類(lèi)型的,因此如果想要將輸入轉(zhuǎn)換的值轉(zhuǎn)換為其他的類(lèi)型。例如輸入整數(shù),則可以使用? Convert.ToInt32(string);
?將對(duì)應(yīng)的字符串轉(zhuǎn)換為整數(shù)類(lèi)型:
int m = Convert.ToInt32(Console.ReadLine());
標(biāo)識(shí)符
標(biāo)識(shí)符是用來(lái)識(shí)別類(lèi)、變量、函數(shù)或者任何其他用戶定義的項(xiàng)目。標(biāo)識(shí)符必須遵守以下的基本規(guī)則:
- 標(biāo)識(shí)符必須以字母、下劃線或者@開(kāi)頭,后面可以是數(shù)字、字母、下劃線、@符號(hào)。
- 標(biāo)識(shí)符第一個(gè)數(shù)字一定不能是個(gè)數(shù)字。
- 標(biāo)識(shí)符不能包含任何嵌入的空格或者符號(hào)。
- 標(biāo)識(shí)符不能是 C# 的關(guān)鍵字。除非關(guān)鍵字前面有一個(gè)@前綴。例如:@if是有效的標(biāo)識(shí)符,但if不是。
- 標(biāo)識(shí)符必須區(qū)分大小寫(xiě),大寫(xiě)和小寫(xiě)字母會(huì)被認(rèn)為是不同的字母。
- 標(biāo)識(shí)符不能和 C# 類(lèi)庫(kù)名相同。
二、數(shù)據(jù)類(lèi)型
C# 中,變量可以被分為:值類(lèi)型、引用類(lèi)型和指針類(lèi)型三種數(shù)據(jù)類(lèi)型。
值類(lèi)型
羅列一些常用的值類(lèi)型:
- bool(默認(rèn)值:false)
- int(默認(rèn)值:0)
- double(默認(rèn)值:0.0D)
- float(默認(rèn)值:0.0F)
- decimal(默認(rèn)值:0.0M)
- char(默認(rèn)值:’\0’)
引用類(lèi)型
引用類(lèi)型不包含存儲(chǔ)在變量中的實(shí)際數(shù)據(jù),但它們包含對(duì)變量的引用。
引用類(lèi)型指向的是一個(gè)內(nèi)存位置。
內(nèi)置的引用類(lèi)型:
對(duì)象類(lèi)型(Object)
對(duì)象類(lèi)型是 C# 通用類(lèi)型系統(tǒng)中所有數(shù)據(jù)類(lèi)型的最終積累。
當(dāng)一個(gè)值類(lèi)型轉(zhuǎn)換為引用類(lèi)型,該行為被稱為裝箱;當(dāng)一個(gè)引用類(lèi)型轉(zhuǎn)換為值類(lèi)型,該行為被稱為拆箱。
object obj; // 申明對(duì)象類(lèi)型
obj = 100; // 這是裝箱
動(dòng)態(tài)類(lèi)型(Dynamic)
可以存儲(chǔ)任何類(lèi)型的值在動(dòng)態(tài)數(shù)據(jù)類(lèi)型變量中,這些變量的類(lèi)型檢查是檢查時(shí)發(fā)生的。
dynamic = 100;
與對(duì)象類(lèi)型相似,但是對(duì)象類(lèi)型是在編譯時(shí)發(fā)生的,而動(dòng)態(tài)類(lèi)型是在檢查時(shí)發(fā)生的。
字符串類(lèi)型(String)
char 是字符類(lèi)型,只能賦給它一個(gè)值。
字符串則是可以賦給它一串字符。
char c ='n';
string s = "I am the king!"
除此之外,char 使用單引號(hào)包裹著字符,string 是使用雙引號(hào)包裹著字符串。
字符串除了可以用雙引號(hào)來(lái)進(jìn)行分配,同時(shí)也可以使用@雙引號(hào)來(lái)進(jìn)行分配。
例如:
string s = @"The first word
good nice \n
biuuuuuuuuu!";
字符串前面加上 @,被稱為逐字字符串。在這其中,轉(zhuǎn)移符號(hào) \ 將會(huì)失效。同時(shí)也是按照在程序中的格式來(lái)輸出文本。
指針類(lèi)型(Pointer Types)
指針類(lèi)型變量存儲(chǔ)另一種類(lèi)型的內(nèi)存地址。
聲明語(yǔ)法:
type* identifier;
char* cptr;
int* iptr;
三、總結(jié)
C# 變量的定義,初始化。用戶輸入值的轉(zhuǎn)換,以及標(biāo)識(shí)符要遵循的規(guī)則。
三大數(shù)據(jù)類(lèi)型:值類(lèi)型、引用類(lèi)型和指針類(lèi)型。
其中了解了值類(lèi)型的部分常用數(shù)據(jù)類(lèi)型,引用類(lèi)型的三個(gè)類(lèi)型的介紹。