目录
一、简介
二、ref 关键字
案例
注意点1
注意点2
三、out 关键字
案例
注意点1
注意点2
四、ref 和 out 关键字的相同点
五、ref 和 out 关键字的不同点
结束
一、简介
在C#中,ref和out关键字用于参数传递的方式。它们允许在方法内部对参数进行修改,并将修改后的值带回到调用方法中。 ref关键字用于传递引用类型的参数。当使用ref关键字传递参数时,方法内部对参数的任何修改都会影响到调用方法中的原始变量。 out 关键字主要用于传递值类型的参数,并且要求在方法内部对参数进行赋值。与ref不同,使用out关键字传递参数时,不需要在调用方法之前对参数进行初始化。
二、ref 关键字
案例
namespace RefAndOut
{
internal class Program
{
static void Main(string[] args)
{
int number = 5;
UpdateValue(ref number);
Console.WriteLine(number);
Console.ReadKey();
}
static void UpdateValue(ref int value)
{
value = 10;
}
}
}
运行:
注意点1
ref 传递的变量一定要初始化,否则会报错
注意点2
ref 参数在方法内不赋值,也不会有任何影响
namespace RefAndOut
{
internal class Program
{
static void Main(string[] args)
{
int number = 5;
string name = "test";
UpdateValue(ref number, ref name);
Console.WriteLine(number);
Console.WriteLine(name);
Console.ReadKey();
}
static void UpdateValue(ref int value, ref string name)
{
//value = 10;
//name = "tt";
}
}
}
运行:
三、out 关键字
案例
namespace RefAndOut
{
internal class Program
{
static void Main(string[] args)
{
int age;
string name;
Test(out age, out name);
Console.WriteLine("age:{0}, name:{1}", age, name);
Console.ReadKey();
}
static void Test(out int age, out string name)
{
age = 16;
name = "张三";
}
}
}
运行:
注意点1
out 关键字,必须在方法体内部赋值,否则会报错
注意点2
使用 out 参数,执行的变量可以不进行初始化
四、ref 和 out 关键字的相同点
1. 都是通过函数参数传递的方式:
ref 和 out 都是用于按引用传递参数,可以在方法内部修改传递的参数的值。
2.都可以在调用方法之前进行初始化
ref 和 out 都可以在调用方法之前进行初始化,调用方法后,参数的实际值以方法内部的赋值为准。
五、ref 和 out 关键字的不同点
1. 参数的初始化:
使用 ref 关键字传递参数时,参数在调用函数之前必须被初始化(赋值),而使用 out 关键字传递参数时,参数可以在调用的函数内部进行初始化。
2. 方法内部的赋值:
使用 ref 关键字传递参数时,函数内部可以不进行赋值,而使用 out 关键字传递参数时,函数内部必须进行赋值
结束
如果这个帖子对你有所帮助,欢迎 关注 + 点赞 + 留言,谢谢!
end