簡體   English   中英

C# - DateTime.TryParse問題 - 為什么它不喜歡我的日期字符串表示?

[英]C# - DateTime.TryParse issue - why doesn't it like my string representation of my date?

這是我的代碼:

            DateTime Dob = Convert.ToDateTime("1/1/1800");
            DateTime Dod = Convert.ToDateTime("1/1/1800");

            if (!DateTime.TryParse(p.birthday, out Dob) && !DateTime.TryParse(p.deathday, out Dod))
            {
                // handle error
            }

p.birthday是:

在此輸入圖像描述

p.deathday是:

在此輸入圖像描述

.TryParse()代碼命中時,我的Dob的DateTime對象是:

在此輸入圖像描述

而Dod的DateTime對象是:

在此輸入圖像描述

問題 :為什么Dod仍然是“1-1-1800”(我指定的初始值),但Dob設置正確? 關於“2007-02-28”的Dod值有什么不喜歡的嗎?

DateTime.TryParse(p.birthday, out Dob)成功將string轉換為DateTime ,因此返回true。 你用它來反轉! 給予假。

當執行到達&&運算符時,它看到第一個操作數已經為false ,因此不會打擾執行第二個操作數。

您既可以預先執行,也可以使用非快捷方式AND運算符&

編輯:或

if (!(DateTime.TryParse(p.birthday, out Dob) || DateTime.TryParse(p.deathday, out Dod)))
{
    ...
}

原因是它正在執行!(DateTime.TryParse(p.birthday,out Dob)並返回false。因此!DateTime.TryParse(p.deathday,out Dod)不會被執行。

根據

http://msdn.microsoft.com/en-us/library/2a723cdk.aspx

x && y

if x is false, y is not evaluated, because the result of the 
AND operation is false no matter what the value of y is. This is known as 
"short-circuit" evaluation.

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM