C 引用型別 2)

2021-04-13 05:45:44 字數 4116 閱讀 8883

object

(c#

參考)

object

型別在.net framework

中是object

的別名。c#的統一型別系統中,所有型別(預定義型別、使用者定義型別、引用型別和值型別)都是直接或間接從object繼承的。可以將任何型別的值賦給object

型別的變數。將值型別的變數轉換為物件的過程稱為裝箱。將物件型別的變數轉換為值型別的過程稱為取消裝箱有關更多資訊,請參見

裝箱和取消裝箱。示例

下面的示例演示了

object

型別的變數如何接受任何資料型別的值,以及

object

型別的變數如何在

.net framework

中使用object

的方法。

複製**

// keyword_object.cs

using system;

class sampleclass

class mainclass

} 輸出

1 system.int32 1 10

c# 語言規範

有關更多資訊,請參見

c# 語言規範

中的以下各章節:·1

簡介·4.2.2

物件型別

·string

(c#

參考)

string型別表示零或更多unicode字元組成的序列string.net frameworkstring

的別名。儘管

string

是引用型別,但定義相等運算子(==

!=

)是為了比較

string

物件(而不是引用)的值

。這使得對字串相等性的測試更為直觀。例如:

複製**

string a = "hello";

string b = "h";

b += "ello";

console.writeline(a == b);

console.writeline((object)a == (object)b);

這將先顯示

「true」

,然後顯示

「false」

,因為字串的內容是相同的,但是a和

b引用的不是同乙個字串例項。

+運算子用於連線字串:

複製**

string a = "good " + "morning";

這將建立乙個包含

「good morning」

的字串物件。

字串是不可變的,即:字串物件在建立後,儘管從語法上看您似乎可以更改其內容,但事實上並不可行。例如,編寫此**時,編譯器實際上會建立乙個新字串物件來儲存新的字串行,變數b繼續儲存「h」

複製**

string b = "h";

b += "ello";

運算子可以用來訪問string

中的各個字元:

複製**

string str = "test"; char x = str[2]; // x = 's';

字串為string型別並可寫成兩種形式,即用引號引起來和用

@ 引起來

用引號引起來的字串括在雙引號(")

內:複製**

"good morning" // a string literal

字串可以包含包括轉義序列在內的任何字元:

複製**

string a = "///u0066/n";

上面的字串包含乙個反斜槓、字母

f 和乙個新行。

注意

轉義碼

/udddd(其中dddd

是乙個四位數)表示unicode 字元u+

dddd。此外還識別8 位unicode 轉義碼:/udddd/udddd

@引起來的字串以@開頭,並且也用雙引號引起來

例如:複製**

@"good morning" // a string literal

用@ 引起來的優點在於換碼序列「不

」被處理,這樣就可以輕鬆寫出字串,例如乙個完全限定的檔名:

複製**

@"c:/docs/source/a.txt" // rather than "c://docs//source//a.txt"

若要在乙個用

@ 引起來的字串中包括乙個雙引號,請使用兩對雙引號:

複製**

@"""ahoy!"" cried the captain." // "ahoy!" cried the captain.

@ 符號的另一種用法是使用碰巧成為

c# 關鍵字的被引用的

(/reference

) 識別符號。

示例複製**

// keyword_string.cs

using system;

class testclass

} 輸出

hello world true

c# 語言規範

有關更多資訊,請參見

c# 語言規範

中的以下各章節:

·2.4.2

識別符號·

2.4.4

.5 字串

·4.2.3

字串型別

·7.9.7

字串相等運算子

來自:msdn

C 引用型別

1 靜態記憶體和動態記憶體分別對應棧記憶體和堆記憶體嗎?那麼值型別和引用型別的記憶體分配是怎樣的?堆記憶體就是 執行時動態分配的記憶體。執行期完成 上靜態分配記憶體。引用型別的物件總是在程序堆中動態分配記憶體。對於值型別,如果某個類的例項有個值型別的字段,例如類的成員變數是值型別的,但是類 是引用型...

C 型別基礎 引用型別

上一講說了一下值型別的部分內容,雖然沒有什麼有意思的東西能吸引大家的注意 也沒啥好的 讓大家參考一下 但是樓主的水平實在有限 各位看官如果不嫌棄的話 還是看看吧 如果對你的生活或者學習有那麼一絲幫助的話 都算是樓主的萬幸 當宣告乙個引用型別變數,並使用new 操作符建立引用型別實力的時候 該引用型別...

C 值型別,引用型別

2,引用型別 概念 值型別直接儲存其值,而引用型別儲存對其值的引用。引用型別 string,class,陣列 派生於system.array 委託 派生於system.delegate 介面。引用型別當宣告乙個類時,只在棧中分配一小片記憶體用於容納乙個位址,而此時並沒有為其分配堆上的記憶體空間。3,...