C# 值類型和引用類型及參數(shù)傳遞.doc_第1頁
C# 值類型和引用類型及參數(shù)傳遞.doc_第2頁
C# 值類型和引用類型及參數(shù)傳遞.doc_第3頁
C# 值類型和引用類型及參數(shù)傳遞.doc_第4頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

C# 值類型和引用類型及參數(shù)傳遞值類型和引用類型:C#數(shù)據(jù)類型分為兩大類:值類型和引用類型。值類型數(shù)據(jù)主要有:結(jié)構(gòu)體struct,枚舉體enum,布爾型bool,浮點型,整型。引用類型數(shù)據(jù)主要有:數(shù)組,字符串,接口,委托,類。值類型和引用類型的區(qū)別:引用類型繼承自System.Object,值類型繼承自System.ValueType。引用類型保存到內(nèi)存的堆heap中,值類型保存在內(nèi)存的堆棧stack中。在.net中,棧的內(nèi)存是自動釋放的,而堆會有垃圾回收器GC來釋放。引用類型可以派生出新的類型,而值類型不可以。引用類型可以包含null值,而值類型不可以。引用類型變量賦值只復(fù)制對象的引用,不復(fù)制對象本身。而將一個值類型變量賦給另一個值類型變量時,將復(fù)制包含的值。下面一個小例子可以簡單說明值類型和引用類型:class PointR public int x, y; struct PointV public int a, b; class Program static void Main(string args) /給一個引用類型賦值將復(fù)制到一個對象的引用,而給一個值類型賦值將復(fù)制一個對象的值 PointR r; PointV v; r = new PointR(); v = new PointV(); r.x = 7; v.a = 7; PointR pr = r; PointV pv = v; pr.x = 9; pv.a = 9; Console.WriteLine(r.x);/9 Console.WriteLine(v.a);/7 Console.Read(); C#參數(shù)傳遞:.net默認的是通過值傳送變量,但是也可以迫使值參數(shù)通過引用傳送給方法。C#要求對傳遞給方法的參數(shù)進行初始化。在傳遞給方法之前,無論時按值 傳遞,還是按引用傳遞,變量都必須初始化。 ref關(guān)鍵字:可以迫使值參數(shù)通過引用傳送給方法。即:在.net中,如果把一個參數(shù)傳遞給方法,且這個方法的輸入?yún)?shù)前帶有ref關(guān)鍵字,則該方法對變 量所做的任何改變都會影響原來對象的值。下面一個小例子說明按值傳遞和ref參數(shù)傳遞:class Program /默認值,C#的參數(shù)是按值傳遞的,這也是最常見的情況 static void Method1(int p) +p; /為了按引用傳遞,C#提供了參數(shù)修飾字ref,。ref修飾字要求變量在傳遞給方法之前必須賦值 static void Method2(ref int p) +p; static void Main(string args) int x = 9; int y = 9; Method1(x); Method2(ref y); Console.WriteLine(x);/9 Console.WriteLine(y);/10 Console.Read(); 在方法的輸入?yún)?shù)前面加上out關(guān)鍵字時,傳遞給該方法的變量可以不初始化。該變量通過引用傳遞,所以在從被調(diào)用的方法中返回時,方法對該變量進行 的任何改變都會保留下來。在調(diào)用該方法時,還需要使用out關(guān)鍵字,這與在定義該方法時一樣。并且out修飾字要求變量在從方法返回時必須賦值。舉例說 明:class Program /out修飾字要求變量在從方法返回時必須賦值 static void Split(string name, out string firstName, out string lastName) int i = name.LastIndexOf( ); firstName = name.Substring(0, i); lastName = name.Substring(i + 1); static void Main(string args) string a, b; Split(zhou enlai, out a, out b); Console.WriteLine(0+ 1, a, b);/zhou+ erlai Console.Read(); 還有一個params修飾傳遞參數(shù),示例:class Program /params 修飾字可以使用在方法的最后一個參數(shù)上,這樣方法就可以接受任意數(shù)目的某種類型的參數(shù) static int Add(params int arr) int sum = 0; foreach (int i in arr) sum += i; return sum; static void Main(string

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論