C# 有没有办法省略掉参数?

C# 有没有办法省略掉参数?,c#,parameter-passing,out-parameters,C#,Parameter Passing,Out Parameters,假设我有一个带有out参数的函数,但是我不需要它的值。如果给定的结果将被丢弃,是否有方法不传递实际参数 编辑: 尽管这个问题已被投票否决 只有当您从方法创建者的角度来看时,才会出现这种情况。如果您是该方法的用户,您不想让参数成为可选的,只想在不声明变量的情况下使用它。虽然这是不可能的,但是可以在方法调用中声明它。因此,不是: int unusedValue; TryGetValue("key", out unusedValue); 你会得到: TryGetValue("key", out in

假设我有一个带有
out
参数的函数,但是我不需要它的值。如果给定的结果将被丢弃,是否有方法不传递实际参数

编辑:

尽管这个问题已被投票否决 只有当您从方法创建者的角度来看时,才会出现这种情况。如果您是该方法的用户,您不想让参数成为可选的,只想在不声明变量的情况下使用它。虽然这是不可能的,但是可以在方法调用中声明它。因此,不是:

int unusedValue;
TryGetValue("key", out unusedValue);
你会得到:

TryGetValue("key", out int unusedValue);
甚至:

TryGetValue("key", out _);
这应作为答案添加,但:

  • 我不能为这个问题这样做,因为它被标记为一个傻瓜
  • 这个问题看起来像是一个骗局,实际上要求的是另一件事

    • 您不能这样做,但没有规则规定必须使用返回的值。您可以简单地传递一个不再使用的临时变量

      C#4.0允许可选参数,但
      out
      参数不能是可选的

      编辑:顺便说一句,您还可以重载该方法:

      int DoStuff()
      {
          int temp;
          return DoStuff(out temp);
      }
      
      int DoStuff(out outParam)
      {
          //...
      }
      

      虽然您实际上不能使out参数成为可选的,但是您可以简单地为没有out参数的函数创建重载,这样就不需要创建临时变量了

      public void DoSomething(int param1, out int param2)
      {
          /* Method work here */
      }
      
      public void DoSomething(int param1)
      {
          int temp;
          DoSomething(param1, out temp);
      }
      

      不确定C#,但在VB.Net中,您可以简单地将常量传递给输出(byref)参数。因此,如果您有一个整数作为输出参数,则不必传入实际变量,只需传入0或任何其他有效整数即可。对于对象,包括字符串,您可以不传入任何内容(在C#中为Null),一切正常。我不确定变量存储在哪里,可能只是在堆栈上,就像在您传入的任何其他参数中一样,当函数退出时,它就会消失。

      我知道我不必使用它。我也不想传递任何变量。不过,这是答案,谢谢。这个答案更实用。如果您想使用它或不再使用它,以后无需修改。如果您不拥有正在调用的方法,您可以创建一个扩展方法来为您虚拟输出参数。我尝试了一下,不幸的是,它不起作用<代码>错误CS1510:ref或out参数必须是可赋值变量。