Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# c在转换之前检测字符串是否为long或DateTime_C#_Datetime_Type Conversion_Long Integer - Fatal编程技术网

C# c在转换之前检测字符串是否为long或DateTime

C# c在转换之前检测字符串是否为long或DateTime,c#,datetime,type-conversion,long-integer,C#,Datetime,Type Conversion,Long Integer,我有密码: if(DateTime.TryParse(objString, out DateTime result)) { // ... } else if (long.TryParse(objString, out long result)) { // ... } else { // ... } 如果objString=782,4 DateTime TryParse正常,结果是782-04-01 00:00:00 我怎样才能解决这个问题 尝试指定区域性: DateT

我有密码:

if(DateTime.TryParse(objString, out DateTime result))
{
    // ...
}
else if (long.TryParse(objString, out long result))
{
    // ...
} 
else
{
    // ...
}
如果objString=782,4 DateTime TryParse正常,结果是782-04-01 00:00:00


我怎样才能解决这个问题

尝试指定区域性:

DateTime.TryParse(objString, Thread.CurrentThread.CurrentCulture, System.Globalization.DateTimeStyles.None, out result)

尝试指定区域性:

DateTime.TryParse(objString, Thread.CurrentThread.CurrentCulture, System.Globalization.DateTimeStyles.None, out result)

最简单的解决方案就是简单地更改检查字符串的顺序

因此,不是:

if(DateTime.TryParse(objString, out DateTime result))
{
    // ...
}
else if (long.TryParse(objString, out long result))
{
    // ...
} 
else
{
    // ...
}
只需简单地更改if语句的顺序:

if (long.TryParse(objString, out long result))
{
    // ...
}
else if (DateTime.TryParse(objString, out DateTime result))
{
    // ...
} 
else
{
    // ...
}
正如我在评论中已经说过的,如果要计算浮点数,必须使用double.TryParse

因此,或许可以用这个来代替:

if (double.TryParse(objString, out double dblResult))
{
    // ...
}
else if (DateTime.TryParse(objString, out DateTime dateTimeResult))
{
    // ...
} 
else
{
    // ...
}

最简单的解决方案就是简单地更改检查字符串的顺序

因此,不是:

if(DateTime.TryParse(objString, out DateTime result))
{
    // ...
}
else if (long.TryParse(objString, out long result))
{
    // ...
} 
else
{
    // ...
}
只需简单地更改if语句的顺序:

if (long.TryParse(objString, out long result))
{
    // ...
}
else if (DateTime.TryParse(objString, out DateTime result))
{
    // ...
} 
else
{
    // ...
}
正如我在评论中已经说过的,如果要计算浮点数,必须使用double.TryParse

因此,或许可以用这个来代替:

if (double.TryParse(objString, out double dblResult))
{
    // ...
}
else if (DateTime.TryParse(objString, out DateTime dateTimeResult))
{
    // ...
} 
else
{
    // ...
}

问题不清楚。您面临的问题是什么?是否尝试指定区域性信息和样式?如果您事先知道所需日期时间的字符串表示形式,请使用DateTime.TryParseExact。如果没有,您可能需要测试DateTime是否在有效范围内。如果没有简单的设置,请先尝试longdates@styx-如果字符串是DateTime或long,则无法使用is进行检查-只有当它可转换为此类型时,is才起作用。问题不清楚。您面临的问题是什么?是否尝试指定区域性信息和样式?如果您事先知道所需日期时间的字符串表示形式,请使用DateTime.TryParseExact。如果没有,您可能需要测试DateTime是否在有效范围内。如果没有简单的设置,请先尝试longdates@styx-如果字符串是DateTime或long,则无法使用is进行检查-is仅在可强制转换为该类型时起作用-结果相同。结果相同。