引用參數
值參數和引用參數的區別在于傳參時是否會創建參數副本:值參數不會創建副本,而引用參數會創建副本。
換言之,值類型參數的參數與實體之間無直接關聯,修改參數不會對實體產生影響;引用類型參數的參數與實體可視為同一參數,修改參數會將修改同步至實體。
注:當函數并不修改參數引用,而只是修改被引用的對象時,值參數引用類型與引用參數引用類型在使用上并無區別,只是機制不同
使用方式:形參與實參用?ref?修飾
int num = 100;
public void Calculate(ref int x, int y)
{// 邏輯
}
Calculate(ref num, 50);
輸出參數
輸出參數與引用參數類似,其修飾符為?out?(只是在函數中必需對輸出參數執賦值操作,否則無法編譯通過)
int num = 100;
public void Calculate(out int x, int y)
{// 邏輯x = 1;
}Calculate(num, 10)
數組參數
設置數組參數后,函數可接收動態數量的參數(數組參數必需位于參數列表的末尾;數組參數允許不傳參)
使用方式:形參使用?params?修飾
public void Calculate(int x, int y, params int[] z)
{// 邏輯
}Calculate(1, 10, 1, 2, 3); // 1 2 3會被整合進z數組
具名參數
通過具名參數傳參,無需提前聲明變量(具名參數依據參數名與形參匹配,而不是次序)
使用方式:參數?:?值(傳參時)
public void Calculate(int x, int y)
{// 邏輯
}Calculate(x: 1, y: 10);
可選參數
設置可選參數后,參數具有默認值,可選擇不傳參;若對參數傳參,則覆蓋默認值
public void Calculate(int x = 1, int y = 1)
{// 邏輯
}Calculate(10);