在C#中,ref、out和in是三种方法参数修饰符,它们在传递参数的方式和作用上有所不同。
ref修饰符:
传递方式:使用ref修饰符的参数可以是输入输出参数,即在方法调用前后都可以对其进行修改。
作用:通过ref修饰符传递的参数必须在方法调用之前初始化,并且方法内对参数的修改会对调用方的变量产生影响。ref修饰符可以用于值类型和引用类型参数。
out修饰符:
传递方式:使用out修饰符的参数只能作为输出参数,即在方法内部必须对其进行赋值。
作用:通过out修饰符传递的参数可以在方法内部进行赋值,而不需要在方法调用之前初始化。out修饰符可以用于值类型和引用类型参数。
in修饰符:
传递方式:使用in修饰符的参数只能作为输入参数,即在方法内部不能对其进行修改。
作用:通过in修饰符传递的参数可以防止方法对其进行修改,从而提高代码的可靠性和安全性。in修饰符只能用于值类型和只读引用类型参数,并且不能用于方法的返回值。
总结:文章来源:https://www.toymoban.com/news/detail-668552.html
ref修饰符用于输入输出参数,方法内部可以对其进行修改。
out修饰符用于输出参数,方法内部必须对其进行赋值。
in修饰符用于输入参数,方法内部不能对其进行修改。
使用这些修饰符可以灵活地控制方法参数的传递方式,从而满足不同的需求。文章来源地址https://www.toymoban.com/news/detail-668552.html
internal class Program
{
private static void Main(string[] args)
{
//int num1 = 10;
//number0(num1);
//Console.WriteLine("初始值:" + num1);
//Console.ReadLine();
//------------------------------
//int num1 = 10;//使用ref修饰符,实参必须初始化
//numberRef(ref num1);
//Console.WriteLine("初始值:" + num1);
//Console.ReadLine();
//-------------------------------
//int num1 = 10;
//numberOut(out num1);
//Console.WriteLine("初始化的值:" + num1);
//Console.ReadLine();
//---------------------------------
int num1 = 10;
numberIn(in num1);//可以省略in
Console.ReadLine();
}
/// <summary>
/// 无修饰符
/// </summary>
/// <param name="num1"></param>
public static void number0(int num1)
{
num1 *= 2;
Console.WriteLine("修改后的值:" + num1);
}
/// <summary>
/// ref(reference)修饰的参数必须初始化,方法内部,通过引用传递,修改实参的值,最终输出
/// </summary>
/// <param name="num1"></param>
public static void numberRef(ref int num1)
{
num1 *= 2;
Console.WriteLine("ref参数修改后的值:" + num1);
}
/// <summary>
/// out修饰的参数可以初始化,也可以不初始化,传递过来的参数会被清空,最终,以方法内部赋值的结果为准
/// </summary>
/// <param name="number1"></param>
public static void numberOut(out int number1)
{
number1 = 20;
Console.WriteLine("out参数修改的值:" + number1);
}
/// <summary>
/// in修饰符参数,限制方法参数传递过来的实参的修改
/// </summary>
/// <param name="number1"></param>
public static void numberIn(in int number1)
{
//方法内部不能修改,传递过来的实参,只能读取,不能修改
// number1 = 10;
Console.WriteLine("in 参数修饰符:" + number1);
}
}
到了这里,关于c# 方法参数修饰符(out、ref、in)的区别的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!