//chap 3.2.2(3)
class
program
;int i = 10;
console.writeline("i=" + i);
console.writeline("ints=" + ints[0]);
console.writeline("改變後");
changefun(ints, i);
console.writeline("i=" + i);
console.writeline("ints=" + ints[0]);
console.readline();
}static
void changefun(int ints,int i)
}
除非特殊說明,所有的引數都是通過方法來傳遞。但是,因為引用型別的變數只包含物件的引用,將要複製的正是這個引用,而不是物件本身,所以對底層物件的修改會保留下來。相反,值型別的物件包含的是實際資料,所以傳遞給方法的是資料本身的副本。
例如,int通過傳遞給方法,對應方法對該int的值所做的任何改變都沒有改變原int物件的值,但如果把陣列或其他引用型別(如類)傳遞給方法,對應的方法就會使用該引用改變這個陣列中的值,而新值會反射在原始陣列物件上。
需要注意的是,字串的行為方式有所不同,因為字串是不可變的(如果字串的值改變,就會建立乙個全新的字串),所以字串無法採用一般引用型別的行為方式。在方法呼叫中,對字串做的任何改變都不會影響原始字串。
(4)
class program
;int i = 10;
console.writeline("i=" + i);
console.writeline("ints=" + ints[0]);
console.writeline("name=" + name);
console.writeline("改變後");
changefun(ints, ref i, ref name);
console.writeline("i=" + i);
console.writeline("ints=" + ints[0]);
console.writeline("name=" + name);
console.readline();
}//如果把乙個引數傳遞給方法,且這個方法的輸入引數前面帶了ref關鍵字,則該方法所做的任何改變都會影響原始物件的值
static
void changefun(int ints,ref
int i, ref
string name)
}
(5)
class program
//編譯器使用out關鍵字來初始化。在方法的輸入引數前面加上out時,傳遞給方法的變數可以不需要初始化,改變量通過引用傳遞,所以在被呼叫的方法中返回,對應方法對該變數進行的任何改變都會保留下來。
static
void outint(out
int i,out
string testname)
}
C 入門經典(第七版) 學習筆記
學習資料 c 入門經典 第七版 學習計畫 一天至少一章,主要是熟悉語法以及背後的原理 編譯環境ide vsc visual stduio community ps 老忘記的事情 console.readkey 等待乙個響應,即任意敲擊鍵盤一次 右側解決方案中,program.cs檔案雙擊某個函式,可...
《C語言程式設計(第3版)》教材配套習題 第七章
查詢問題 字串輸入與轉換 刪除字串中的空格 選擇法排序 輸入 第一行給出乙個不超過10的正整數n。第二行給出n個整數,其間以空格分隔。輸出 在一行中輸出從大到小有序的數列,相鄰數字間有乙個空格,行末不得有多餘空格。核心 從頭開始,找出其後所有數中的最大值,並將該值換到最前面 include defi...
C 高階程式設計第七天 命名空間
命名空間 命名空間的設計目的是為了提供一種讓一組名稱與其他名稱分隔開的方式。在乙個命名空間中宣告的類的名稱與另乙個命名空間中宣告的相同的類的名稱不衝突。關鍵字 namespace namespace namespace name 而建立別名的另乙個重要的原因在於同一cs 檔案中引入的不同命名空間中包...