Convert.TryToInt64 而不是 Convert.ToInt64?

Shi*_*mmy 5 c# performance conditional

我有这个功能我必须实现:

protected override ValidationResult IsValid(
    Object value,
    ValidationContext validationContext
)
{
  //Here is where I wanna test whether the following conversion is applicable
  var x = Convert.ToInt64(value);
}
Run Code Online (Sandbox Code Playgroud)

我可以将该行包装在 try-catch 块中,或者使用其他方法来执行该测试,以下是其中之一:

var convertible = value as IConvertible;
if (convertible != null)
  var x = convertible.ToInt64(null);
Run Code Online (Sandbox Code Playgroud)

执行此操作的最有效方法是什么?

Ash*_*ani 7

在这里你可以定义一个默认值,如果解析(转换)适用,它将返回转换后的 int64 否则将返回默认值:

Int64 DefaultValue = 0;
Int64.TryParse(MyVar , out DefaultValue);
Run Code Online (Sandbox Code Playgroud)

IE:

Int64 DefaultValue = 0;
Int64.TryParse("1234" , out DefaultValue);
Run Code Online (Sandbox Code Playgroud)

默认值为 1234

Int64 DefaultValue = 0;
 Int64.TryParse("test" , out DefaultValue);
Run Code Online (Sandbox Code Playgroud)

默认值将为 0

您还可以通过像这样声明变量来使其更短:

 Int64.TryParse("123" , out Int64 DefaultValue);
Run Code Online (Sandbox Code Playgroud)