阅读计算器后,在检查,你应该使用DateTime.TryParse日期时间的格式的情况下。 尝试一些正则表达式后,他们似乎得到长期和讨厌的覆盖地段格式。
但需要的TryParse的“out”参数,因为我只想做一个验证格式检查我不需要实际的结果。
所以我留下了持有的“出”的结果和我做与它无关的变量。 有没有一种方法,所以我没有做出来的参数?
所以我摆脱这个警告并停止具有可变只是飞来飞去。
阅读计算器后,在检查,你应该使用DateTime.TryParse日期时间的格式的情况下。 尝试一些正则表达式后,他们似乎得到长期和讨厌的覆盖地段格式。
但需要的TryParse的“out”参数,因为我只想做一个验证格式检查我不需要实际的结果。
所以我留下了持有的“出”的结果和我做与它无关的变量。 有没有一种方法,所以我没有做出来的参数?
所以我摆脱这个警告并停止具有可变只是飞来飞去。
不。 我把它包装方法的地方,以保持噪声在主流的:
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()
}
用C#7.0(自八月2016),你可以使用出VAR结构,然后就忽略后面的代码的新变种。
bool success = DateTime.TryParse(value, out var result);
如果你真的不关心结果的值,使用丢弃 :
bool success = DateTime.TryParse(value, out _);
我不建议你真正做到这一点,但你可以使用一个辅助类来简化这个对所有输出参数:
public static class OutHelper<T>
{
[ThreadStatic]
public static T Ignored;
}
然后,您可以拨打:
if (DateTime.TryParse(text, out OutHelper<DateTime>.Ignored))
这太可怕了,使用公共可变场,如果您的应用程序也与一些恶意代码执行时,它给出了代码访问你解析的最后一个值...但它应该工作:)
不可以,你无法摆脱的变量,但你不应该得到一个编译器警告要么。
传递一个变量作为out
为“使用”的变量中。 编译器不会发出正因为如此警告。
如果您使用的是.NET 3及以上的,你总是可以创建一个扩展方法?
public static bool IsValidDate(this string value)
{
DateTime date = DateTime.Null;
return DateTime.TryParse(value, out date);
}
[编辑方法名重命名为一个更合适的酮]
TryParse
是一个更好的选择。 它只是被浪费的变量。 其他选项包括使用Convert.ToDateTime()
一个try-catch块中。 但同样因为try-catch代码块意思是沉重的,不会是有效的。 下一个选项是正则表达式。 这是一个更好的解决方案。 我想这立刻给你的结果不是比别人。
可以很好的包裹像金Gräsman的方法说...