一、
預定義型別。 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類...