不适用参数修饰符
函数内给参数赋值,不改变实际参数的值。
即修改只在函数中,函数执行完就失去生命周期了。
private void Form1_Load(object sender, EventArgs e)
{
string str = "来买西瓜";
Mes(str);
MessageBox.Show(str);
}
public void Mes(string str)
{
str = "张三来买西瓜";
MessageBox.Show(str);
}
首先显示函数内的打印信息
可以看见str的信息改变(函数内)
随后打印主函数中的str
str的值没有变
out
函数中参数修改,实际参数也修改。相当于c++中的传引用
不必要赋初值,函数体内必须赋值。
private void Form1_Load(object sender, EventArgs e)
{
string str = "来买西瓜";
Mes(out str);
MessageBox.Show(str);
}
public void Mes(out string str)
{
str = "张三来买西瓜";
MessageBox.Show(str);
}
参数不赋值可以运行。
但是如果在函数体内不赋值的话,会直接报错。
提示你对out修饰的参数进行赋值
ref
ref也是传引用。函数中参数修改,实际参数也修改。
必须要有初值,函数内,可赋值,可不赋值。
private void Form1_Load(object sender, EventArgs e)
{
string str= "来买西瓜";
Mes(ref str);
MessageBox.Show(str);
}
public void Mes(ref string str)
{
str = "张三来卖西瓜";
MessageBox.Show(str);
}
函数体内不赋值,也可运行
private void Form1_Load(object sender, EventArgs e)
{
string str= "来买西瓜";
Mes(ref str);
MessageBox.Show(str);
}
public void Mes(ref string str)
{
MessageBox.Show(str);
}
如不给参数赋初值,则会报错