在C#中删除参数?

cho*_*bo2 14 .net c# out-parameters

在stackoverflow上读取后,在检查DateTime的格式的情况下,您应该使用DateTime.TryParse.在尝试了一些正则表达式后,他们似乎变得冗长而讨厌,希望覆盖大量的格式.

但TryParse需要一个"out"参数,因为我只想进行验证格式检查,所以我不需要实际的结果.

所以我留下了一个保持"out"结果的变量,并且我不做任何事情.有没有办法,所以我不必做一个out参数?

所以我摆脱了这个警告,并停止变量只是飞来飞去.

Kim*_*man 20

不.我将它包装在一个方法中以保持噪音不受主流影响:

  bool IsValidDate(string value)
  {
     DateTime result;
     return DateTime.TryParse(value, out result); //result is stored, but you only care about the return value of TryParse()
  }
Run Code Online (Sandbox Code Playgroud)

  • 我考虑在你的答案中将省略号扩展到实际的参数 (6认同)

ksk*_*d19 13

使用C#7(自2016年8月起),您可以使用out var构造,然后忽略后续代码中的新var.

bool success = DateTime.TryParse(value, out var result);
Run Code Online (Sandbox Code Playgroud)

  • 这应该是得票最高的答案。“结果”立即超出范围。 (2认同)

Jon*_*eet 7

我并不是建议您实际执行此操作,但是您可以使用单个帮助程序类来使所有输出参数变得容易:

public static class OutHelper<T>
{
    [ThreadStatic]
    public static T Ignored;
}
Run Code Online (Sandbox Code Playgroud)

然后你可以打电话:

if (DateTime.TryParse(text, out OutHelper<DateTime>.Ignored))
Run Code Online (Sandbox Code Playgroud)

它太可怕了,使用了一个公共可变字段,如果你的应用程序也在执行某些恶意代码,它会让代码访问你解析的最后一个值...但它应该可以工作:)

  • @Mehrdad:我只是想,有一个简单的解决方法......编辑:) (2认同)