C 基礎(四)(C 預定義值型別和引用型別)

2021-04-22 07:50:55 字數 2743 閱讀 2473

一、

預定義型別。 1

、值型別和引用型別 c#

中的資料型別,可以分為值型別和引用型別,值型別儲存在堆疊上,而引用型別儲存在託管堆上。

如下**示例,

int i=10;

int j=i;i和

j的值都是

10,並且在記憶體中會有兩個地方儲存

10.再看下面的**

vector x=new vector();

x.value=20;

vector y=x; 

console.writeline(y.value);

y.value=50;

console.writeline(x.value);

vector

是乙個引用型別,引用型別在使用的時候需要

new

來例項化乙個。這段**執行後,只有乙個

vector

物件,x,y

都指向包含該物件的記憶體位址。因為x,

y儲存的都是物件的引用,所以當

y改變的時候,

x也會改變。所以該程式輸出的結果是20和

50.如果變數是乙個引用,就可以把其值設定為

null

,表示不指向任何物件。 2、

cts型別。

c#的預定義型別並沒有內置於語言中,而是內置於

.net framework

中,比如宣告乙個

int型別時,實際上是

.net

結構system.int32

的乙個例項。這說明,可以把所有的基本資料型別看作是支援某些方法的類。

3、預定義的值型別

a、整型

sbyte ,8

位有符號的整數,範圍從

-128

到127.

byte ,8

位無符號的整數,範圍從0到

255.

short,16

位有符號的整數,範圍從

-32768

到32767

ushort ,16

位無符號的整數,範圍從0到

65535

int,

32位有符號的整數,範圍從

-2147483648

到2147483647

uint,32

位無符號的整數,範圍從0到

4294967295

long,64

位有符號的整數,範圍從-2的

31次方到2的

31次方減

1ulong,64

位無符號的整數,範圍從0到

2的64次方減1b

、浮點型別。

float ,32

位單精度浮點數。

double,64

位雙精度浮點數。

如果**對某個非整數值,如

12.3

硬編碼,則編譯器一般假定該變數是

double

,如果想指定其為

float

,則可以在後面加上字元f。

c、decimal

型別。

該型別是一種財務專用資料型別,是

128位高精度十進位制表示法。

要把資料指定為

decimal

型別的,只需在數字後面加上

m(或者

m)a、

bool

型別。 c#

的bool

型別包含

true

和false

。 b、

字元型別。

也就是char

型別,表示乙個

16位的

unicode

字元。 char

型別的字面量是採用

單引號括起來的。而不是雙引號。雙引號括起來的是字串型別的。

4、預定義引用型別。 a、

object

型別。

這是c#

的基類,所有的類都派生自它。所以,可以使用

object

引用繫結任何子型別的物件,

object

型別執行許多基本的一般用途的方法,如

equals() gethashcode(),gettype()

等,我們需要針對某些方法進行「重寫」,這在後面我們將會學習到。 b、

string

型別。

注意,string

型別是屬於引用型別。我們來看下面一段**,在修改乙個字串的時候,實際上是建立了乙個新的字串,而並非修改了原來在字串。我們來看乙個示例:

using system;

using system.windows;

namespace gosoa.com}}

在這個示例中會輸出

str1="gosoa.com.cn";

str2="gosoa.com.cn";

str1="www.gosoa.com.cn";

str2="gosoa.com.cn";

這和我們所預期的引用型別正好相反,為什麼呢?

因為當我們用「

gosoa.com.cn

」來初始化

str1

的時候,就在堆上分配了乙個

string

物件,當初始化

str2

的時候,也指向了這個物件。當

str1

改變的時候,並不是修改了原有的物件,而是新建立了乙個物件,但

str2

還是指向原來的物件,所以,

str2

的值並未改變。

c 基礎值類和引用型別

值型別 int double char decimal bool enum struct 引用型別 string 陣列 自定義類 集合 object 介面 值傳遞傳遞的值得本身 引用傳遞傳遞的是對物件的引用 ref 將值傳遞改變為引用傳遞 值傳遞和引用傳遞 int n1 10 int n2 n1 n...

c 基礎 值型別和引用型別

c 中有兩種型別的資料,一種是值型別資料,一種是引用型別資料。首先說說什麼型別是值型別,例如 int float bool之類的基礎型別,以及用struct定義的型別,如 datetime。除此外,如string,陣列,以及用class定義的型別等都是引用型別。具體對比如下 值型別引用型別 記憶體分...

C 基礎 值型別和引用型別

struct型別 由一系列具有相同型別或不同型別的資料構成的資料集合 static void main string args struct person enmu型別 使用關鍵字const建立常量,建立常量時必須設定其初始值,一旦設定不允許修改。char只定義乙個unicode字元 string類...