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 framework中string
的別名。儘管
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,...