[示例]详解 C# 中的 ref 与 out 的不同
作者:admin 时间:2023-5-7 9:46:44 浏览:在前文中,我简单介绍了C# ref vs out 的区别,在本文我将继续通过多个示例来详解 C# 中的 ref
与 out
的不同。
C# 中的 ref
和 out
关键字用于在方法或函数中传递参数,两者都表明参数是通过引用传递的。默认情况下,参数按值传递给方法。通过使用这些关键字(ref
和 out
),我们可以通过引用传递参数。
ref 关键字
ref
关键字通过引用传递参数,这意味着当控制权返回到调用方法时,在方法中对此参数所做的任何更改都将反映在该变量中。
示例代码
public static string GetNextName(ref int id)
{
string returnText = "Next-" + id.ToString();
id += 1;
return returnText;
}
static void Main(string[] args)
{
int i = 1;
Console.WriteLine("Previous value of integer i:" + i.ToString());
string test = GetNextName(ref i);
Console.WriteLine("Current value of integer i:" + i.ToString());
}
输出
out 关键字
out
关键字通过引用传递参数。这与 ref
关键字非常相似。
示例代码
public static string GetNextNameByOut(out int id)
{
id = 1;
string returnText = "Next-" + id.ToString();
return returnText;
}
static void Main(string[] args)
{
int i = 0;
Console.WriteLine("Previous value of integer i:" + i.ToString());
string test = GetNextNameByOut(out i);
Console.WriteLine("Current value of integer i:" + i.ToString());
}
输出
ref 和 out 的主要区别
ref | out |
---|---|
在传递给 ref 之前,参数必须先初始化。 | 在传递给 out 之前,不必初始化参数。 |
在返回到调用方法之前不需要分配或初始化参数的值(由 ref 传递)。 | 在返回调用方法之前,被调用方法需要分配或初始化参数值(传递给out )。 |
当调用的方法也需要修改传递参数时,通过 ref 传递参数值很有用。 | 当需要从函数或方法返回多个值时,向 out 方法声明参数很有用。 |
在调用方法中使用参数值之前,不必初始化参数值。 | 参数值必须在使用前在调用方法中初始化。 |
当我们使用 ref 时,数据可以双向传递。 | 当我们使用 out 时,数据仅以单向方式传递(从被调用方法到调用方方法)。 |
ref
和out
在运行时的处理方式不同,而在编译时的处理方式相同。- 属性不是变量,因此不能作为
out
或ref
参数传递。
ref/out 关键字和方法重载
ref
和 out
在运行时的处理方式不同,而在编译时它们的处理方式相同,因此如果一个方法将参数作为 ref
而另一个将参数作为 out
,则不能重载方法。
示例代码
public static string GetNextName(ref int id)
{
string returnText = "Next-" + id.ToString();
id += 1;
return returnText;
}
public static string GetNextName(out int id)
{
id = 1;
string returnText = "Next-" + id.ToString();
return returnText;
}
编译代码时的输出:
但是,当一个方法采用 ref
或 out
参数而另一个方法采用相同的参数但不带 ref
或 out
时,方法重载是可能的。
示例代码
public static string GetNextName(int id)
{
string returnText = "Next-" + id.ToString();
id += 1;
return returnText;
}
public static string GetNextName(ref int id)
{
string returnText = "Next-" + id.ToString();
id += 1;
return returnText;
}
概括
当我们想要在作为参数传递的相同变量中返回一个值时,out
和 ref
关键字很有用。
参考文章:
相关文章
相关文章
x
- 站长推荐