如果我调用一个使用out或ref参数的方法,为什么在调用方法时需要使用out或ref标记参数?即为什么我需要用out或ref前缀参数?
DateTime.TryParse(myDate, out dateLogged)
我还以为这是什么,以减少歧义时,操作符重载,但如果我创建了两个方法,像这样:
void DoStuff(int x, out int y)
{
y = x + 1;
}
void DoStuff(int x, ref int y)
{
y = x + 1;
}
然后Visual Studio的报告“无法定义重载方法‘DoStuff’,因为它不同于另一种方法只在裁判和出“,所以我不能那样做。
编辑:
了些研究后,似乎我需要指定传出或引用调用方法时,如果有声明如下两种重载方法:
void DoStuff(int x, out int y)
void DoStuff(int x, int y)
你真的不希望它是隐含的,它更好的这种方式。只要考虑意外变量变化的可能性。 – Jodrell
这也有让ref看起来很尴尬的好处,因此降低了它的流行度,从而使代码更易于维护。 (IMO) – Jodrell