java 参数 out ref_.NET中ref和out参数之间的区别

.NET中的ref和out参数之间有什么区别? 在什么情况下一个可以比另一个更有用? 一个可以使用而另一个不能使用的代码片段是什么?

#1楼

参考和输出参数:

out和ref参数用于返回作为方法的参数传递的同一变量中的值。 当您的方法需要返回多个值时,这两个参数非常有用。

您必须在calee方法主体中为out参数分配值,否则该方法将无法编译。

参考参数:必须先进行初始化,然后再传递给方法。 方法参数上的ref关键字使方法引用作为同一方法的输入参数传递的同一变量。 如果对变量进行任何更改,它们将反映在变量中。

int sampleData = 0; sampleMethod(ref sampleData);

参考参数的Ex

public static void Main()

{

int i = 3; // Variable need to be initialized

sampleMethod(ref i );

}

public static void sampleMethod(ref int sampleData)

{

sampleData++;

}

输出参数:在传递给方法之前不必初始化。 out参数可用于返回作为方法的参数传递的同一变量中的值。 对参数所做的任何更改都将反映在变量中。

int sampleData; sampleMethod(out sampleData);

Ex的Out参数

public static void Main()

{

int i, j; // Variable need not be initialized

sampleMethod(out i, out j);

}

public static int sampleMethod(out int sampleData1, out int sampleData2)

{

sampleData1 = 10;

sampleData2 = 20;

return 0;

}

#2楼

ref可能会阻塞null,因为它可能希望修改现有对象。 out期望为null,因为它正在返回一个新对象。

#3楼

不需要在函数中设置Ref参数,而out参数必须在退出函数之前绑定到一个值。 传递出去的变量也可以不初始化而传递给函数。

#4楼

out参数由调用的方法初始化, ref参数在调用方法之前初始化。 因此,仅在需要获取辅助返回值时使用out参数,而ref参数用于获取值并有可能返回对该值的更改(其次是返回主返回值)。

#5楼

它们几乎是相同的-唯一的区别是,您不需要初始化作为out参数传递的变量,但必须将其作为ref参数传递给它。

int x;

Foo(out x); // OK

int y;

Foo(ref y); // Error: y should be initialized before calling the method

Ref参数用于可能被修改的数据, out参数用于该函数的附加输出(例如int.TryParse )的数据,这些数据已经使用了返回值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值