參數傳遞
以下為從菜鳥教程中學習記下的筆記
1、按值傳遞參數
這種方式復制參數的實際值給函數的形式參數,實參和形參使用的是兩個不同內存中的值。在這種情況下,當形參的值發生改變時,不會影響實參的值,從而保證了實參數據的安全。
例子:
//定義一個值傳遞的方法
public void swap(int x,int y)
{
}
//調用的時候
xxx.swap(a,b);
2、按引用傳遞參數
引用參數是一個對變量的內存位置的引用。當按引用傳遞參數時,與值參數不同的是,它不會為這些參數創建一個新的存儲位置。引用參數與提供給方法的實際參數具有相同的內存位置。
在C#中,使用ref關鍵字聲明引用參數。
例子:
//定義一個引用傳遞的方法
public void swap(ref int x,ref int y)
{
}
//調用的時候
xxx.swap(ref a,ref b);
3、按輸出傳遞參數
return語句可用於只從函數中返回一個值。但是,可以使用輸出函數來從函數中返回兩個值。輸出參數會把方法輸出的數值賦給自己,其他方面與引用參數類似。
例子:
//定義一個輸出傳遞的方法
public void getValue(out int x)
{
}
//調用的時候
xxx.getValue(out a);
提供給輸出函數的變量不需要賦值。當需要從一個參數沒有指定初始值的方法中返回值時,輸出函數特別有用。
實例:
using System;
namespace CalculatorApplication
{
class NumberManipulator
{
public void getValues(out int x, out int y )
{
Console.WriteLine("請輸入第一個值: ");
x = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("請輸入第二個值: ");
y = Convert.ToInt32(Console.ReadLine());
}
static void Main(string[] args)
{
NumberManipulator n = new NumberManipulator();
/* 局部變量定義 */
int a , b;
/* 調用函數來獲取值 */
n.getValues(out a, out b);
Console.WriteLine("在方法調用之后,a 的值: {0}", a);
Console.WriteLine("在方法調用之后,b 的值: {0}", b);
Console.ReadLine();
}
}
}