我如何将其变成try解析?
private static DateTime _endDate = DateTime.Parse(System.Configuration.ConfigurationManager.AppSettings["EndDate"])
只是
private static DateTime _endDate = DateTime.TryParse(System.Configuration.ConfigurationManager.AppSettings["EndDate"], out Datetime _endDate)
答案 0 :(得分:7)
这将是:
private static DateTime _endDate;
if (!DateTime.TryParse(System.Configuration.ConfigurationManager.AppSettings["EndDate"], out _endDate)) {
// handle failure
}
当然if
部分必须在你的构造函数中,它不能在类声明中松散。
答案 1 :(得分:3)
不,因为TryParse
会返回bool
。
如果解析失败,您需要考虑要执行的操作。例如,您可能需要默认值 - 在这种情况下,您可以编写一个方法,例如:
public static DateTime ParseWithDefault(string text, DateTime defaultValue)
{
DateTime ret;
if (!DateTime.TryParse(text, out ret))
{
ret = defaultValue;
}
return ret;
}
...然后从初始化程序中调用 。如果这不是你想要的行为,你需要弄清楚你做想要的东西......但变量初始值设定项必须是DateTime
类型的表达式(或者可以隐式转换为它)。
如果您需要更复杂的逻辑,可以使用静态构造函数。
答案 2 :(得分:0)
var date = "01/01/2001";
DateTime result;
if (DateTime.TryParse(date, out result))
{
// it worked
}
给那个镜头..
答案 3 :(得分:0)
DateTime.TryParse返回一个布尔值,因此您无法为其分配DateTime。您应该首先声明它,然后将成功分配给布尔值。
private static DateTime _endDate;
private bool success = _endDate.TryParse(System.Configuration.ConfigurationManager.AppSettings["EndDate"], out _endDate);