【发布时间】:2010-10-28 04:06:57
【问题描述】:
类似:
- 如果必须返回方法调用后的变量值:
- if 可以在方法调用之前实例化使用 ref
if 调用前不需要实例化
如果变量的值用于返回、决定或计算方法调用中的其他值,则不要使用 ref 和 out
我理解正确吗?您的简短指南是什么?
【问题讨论】:
标签: c# parameters methods parameter-passing
类似:
if 调用前不需要实例化
如果变量的值用于返回、决定或计算方法调用中的其他值,则不要使用 ref 和 out
我理解正确吗?您的简短指南是什么?
【问题讨论】:
标签: c# parameters methods parameter-passing
对于值类型:
如果您需要在原始存储中更改它,请使用 ref.示例:
int a = -3;
protected void EnsurePositiveValues(ref int value)
{
if (value < 0)
value = 0;
}
对于引用类型:
如果您需要(重新)分配原始参考,请使用 ref.示例:
User u = MembershipAPI.GetUser(312354);
protected void EnsureUser(ref User user)
{
if (user == null)
user = new User();
}
【讨论】:
您还需要考虑值和引用类型。将引用类型作为参数传递给方法时,您将 指针 传递给变量。这意味着您可以在方法内部对变量进行更改,并且它们将可用于调用该方法的代码,但是如果您将其设置为 null,您只是将指针设置为 null,并且当您使用方法返回。
【讨论】:
不确定这是否真的回答了您的问题,但我发现通过 ref 传递值(使用 out 关键字)的一种很好的用法是......
int i = 0;
if (int.TryParse("StringRepresentation", out i)
{
// do something with i which has taken the value of a the previous successful TryParse
}
【讨论】: