App下載

C# 編程語(yǔ)言學(xué)習(xí)系列(二)

士大夫 2021-12-07 12:12:39 瀏覽數(shù) (2581)
反饋

學(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';

用戶(hù)輸入值

用戶(hù)可以通過(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ù)或者任何其他用戶(hù)定義的項(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)型,該行為被稱(chēng)為裝箱;當(dāng)一個(gè)引用類(lèi)型轉(zhuǎn)換為值類(lèi)型,該行為被稱(chēng)為拆箱。

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!";

在這里插入圖片描述

字符串前面加上 @,被稱(chēng)為逐字字符串。在這其中,轉(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# 變量的定義,初始化。用戶(hù)輸入值的轉(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)型的介紹。


C#

0 人點(diǎn)贊