當呼叫帶有引數的方法時,您需要向方法傳遞引數。在 c# 中,有三種向方法傳遞引數的方式:
方式描述
值引數這種方式複製引數的實際值給函式的形式引數,實參和形參使用的是兩個不同記憶體中的值。在這種情況下,當形參的值發生改變時,不會影響實參的值,從而保證了實參資料的安全。
引用引數
這種方式複製引數的記憶體位置的引用給形式引數。這意味著,當形參的值發生改變時,同時也改變實參的值。
輸出引數
這種方式可以返回多個值。
這是引數傳遞的預設方式。在這種方式下,當呼叫乙個方法時,會為每個值引數建立乙個新的儲存位置。
實際引數的值會複製給形參,實參和形參使用的是兩個不同記憶體中的值。所以,當形參的值發生改變時,不會影響實參的值,從而保證了實參資料的安全。下面的例項演示了這個概念:
using system;
static void main(string args)
", a);
console.writeline("在交換之前,b 的值: ", b);
/* 呼叫函式來交換值 */
n.swap(a, b);
console.writeline("在交換之後,a 的值: ", a);
console.writeline("在交換之後,b 的值: ", b);
console.readline();}}
}
當上面的**被編譯和執行時,它會產生下列結果:
在交換之前,a 的值:100
在交換之前,b 的值:200
在交換之後,a 的值:100
在交換之後,b 的值:200
結果表明,即使在函式內改變了值,值也沒有發生任何的變化。
引用引數是乙個對變數的記憶體位置的引用。當按引用傳遞引數時,與值引數不同的是,它不會為這些引數建立乙個新的儲存位置。引用引數表示與提供給方法的實際引數具有相同的記憶體位置。
在 c# 中,使用ref關鍵字宣告引用引數。下面的例項演示了這點:
using system;
static void main(string args)
", a);
console.writeline("在交換之前,b 的值: ", b);
/* 呼叫函式來交換值 */
n.swap(ref a, ref b);
console.writeline("在交換之後,a 的值: ", a);
console.writeline("在交換之後,b 的值: ", b);
console.readline();}}
}
當上面的**被編譯和執行時,它會產生下列結果:
在交換之前,a 的值:100
在交換之前,b 的值:200
在交換之後,a 的值:200
在交換之後,b 的值:100
結果表明,swap 函式內的值改變了,且這個改變可以在 main 函式中反映出來。
return 語句可用於只從函式中返回乙個值。但是,可以使用輸出引數來從函式中返回兩個值。輸出引數會把方法輸出的資料賦給自己,其他方面與引用引數相似。
下面的例項演示了這點:
using system;
static void main(string args)
", a);
/* 呼叫函式來獲取值 */
n.getvalue(out a);
console.writeline("在方法呼叫之後,a 的值: ", a);
console.readline();}}
}
當上面的**被編譯和執行時,它會產生下列結果:
在方法呼叫之前,a 的值: 100
在方法呼叫之後,a 的值: 5
提供給輸出引數的變數不需要賦值。當需要從乙個引數沒有指定初始值的方法中返回值時,輸出引數特別有用。請看下面的例項,來理解這一點:
using system;
static void main(string args)
", a);
console.writeline("在方法呼叫之後,b 的值: ", b);
console.readline();}}
}
當上面的**被編譯和執行時,它會產生下列結果(取決於使用者輸入):
請輸入第乙個值:
7請輸入第二個值:
8在方法呼叫之後,a 的值: 7
在方法呼叫之後,b 的值: 8
c 引數傳遞
引數型別分為int,ref,out三種,預設為int.int型別在字方法中修改了對應變數後,主方法中的值不會發生變化.ref型別在方法中修改了對應變化後,主方法中的值也會發生變化.out主方法中對應的變數不需要初始化.例子 using system using system.collections....
C 引數傳遞
2.指標與引用區別 3.引數為指標的指標或指標的引用 將實參複製乙份給形參,形參為函式的區域性變數,因此函式對形參操作對實參沒有影響。若傳遞物件會產生物件副本,會呼叫拷貝建構函式,操作完後要呼叫析構函式。形參為指向實參位址的指標,其也算一種按值傳遞,只不過是將實參的位址作為引數傳遞給形參,因此函式對...
c 引數傳遞
引數傳遞 形參 parameter 和實參 argument int num int a,int b int num int a,int b 在函式的宣告或者定義裡,由由0個或多個形參組成的列表。intmain 形參的型別決定了形參實參互動的方式,如形參是引用型別,他將繫結到對應的實參上,引用形參是...