为什么我需要在para或ref前面加上params?

Gra*_*ush 3 c#

如果我正在调用一个使用out或ref参数的方法,为什么在调用方法时需要用out或ref标记参数?即

DateTime.TryParse(myDate, out dateLogged)
Run Code Online (Sandbox Code Playgroud)

我曾经认为这可以减少操作符重载时的歧义但是如果我创建两个这样的方法:

void DoStuff(int x, out int y)
{
    y = x + 1;
}

void DoStuff(int x, ref int y)
{
    y = x + 1;
}
Run Code Online (Sandbox Code Playgroud)

然后Visual Studio报告"无法定义重载方法'DoStuff',因为它与ref和out中的另一种方法不同",所以无论如何我都不能这样做.

编辑:

经过一些研究后,似乎我需要在调用方法时指定out或ref,如果有两个重载方法声明如下:

    void DoStuff(int x, out int y)

    void DoStuff(int x, int y)
Run Code Online (Sandbox Code Playgroud)

Ada*_*son 10

它就在那里,你明确同意你所调用的方法可能会修改变量本身的值.这是C#语言要求; 其他语言如VB.NET不需要你装饰实际的方法调用,只需要方法签名.