空字符串的奇怪情况

时间:2010-10-05 17:54:10

标签: c# vb.net

我只有在String不为null或为空时才有解析Date Field的代码但是我得到以下异常

从字符串“”到“日期”类型的转换无效。

描述:执行当前Web请求期间发生了未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息:System.InvalidCastException:从字符串“”到“Date”类型的转换无效。

来源错误:

Line 29:         
Line 30:  If (Not String.IsNullOrEmpty(last_login)) Then 
Line 31:    If  String.Format("{0:MM/dd/yy H:mm:ss}", last_login) < Now.AddMinutes(-5) Then
Line 32:      Return "height:100%;width:100% ;background-color:#FF0000;font-weight: bold; color: #000000"
Line 33:    Else

有人请解释一下吗?

6 个答案:

答案 0 :(得分:6)

" "不是空字符串。 (里面有一个空间。)也许你应该拨打.Trim()

last_login != null && last_login.Trim().Length > 0

或者,如果您使用的是.NET 4,IsNullOrWhitespace甚至更好:

string.IsNullOrWhitespace(last_login)

已编辑,感谢@Anthony和@Joel。

答案 1 :(得分:3)

这是一团糟。您正尝试在字符串上使用日期格式符号,以生成字符串,以与日期进行比较。

让我们试试吧。

Dim dLast As DateTime
If ((Not last_login Is Nothing) AndAlso DateTime.TryParse(last_login.Trim(), dLast)) Then
    If (dLast < Now.AddMinutes(-5)) Then
        Return "height:100%;width:100% ;background-color:#FF0000;font-weight: bold; color: #000000"
    End If
End If

编辑:在访问之前检查null字符串。

答案 2 :(得分:1)

您似乎需要String.IsNullOrWhiteSpace()。我在引号内看到一个空格字符。

答案 3 :(得分:1)

.TryParse可以使用string = nothing

Dim dLast As DateTime
If DateTime.TryParse(last_login, dLast) Then
    If (dLast < Now.AddMinutes(-5)) Then
        Return "height:100%;width:100% ;background-color:#FF0000;font-weight: bold; color: #000000"
    End If
End If

答案 4 :(得分:0)

“”是一个空格,既不是空也不是空。您可以先修剪()字符串,然后检查null,Empty或Length == 0。

答案 5 :(得分:0)

它不为null或为空。这是一个空间。你可以尝试修剪它。