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