不击败4年的死马,但我偶然发现这个线程与OP的类似思维过程,并希望总结我的个人发现与这个话题。最终,如果你想设置一个现有对象的DateTime属性,你必须事先解析它(如前面的答案所示)。不过,我实际上关心的是初始化对象,并且您可以在构造函数中传递要解析的文本值。
public class SomeClass
{
public SomeClass(String date)
{
DateTime tmpDate;
DateTime.TryParse(date, out tmpDate);
if (tmpDate != DateTime.Minvalue)
{
FromDate = tmpDate;
}
else
{
throw new ArgumentError(("Unable to parse the input string " + date));
}
在我的具体情况,我想我的DateTime属性是空的,所以我不得不创建一个方法(pulled from here)来处理解析(这将被用来分析数据外,以及在构造函数中。例如:
public class SomeClass
{
public SomeClass(String date)
{
DateTime? tmpDate = this.TryParse(date);
if (tmpDate.hasValue)
{
FromDate = tmpDate;
}
else
{
throw new ArgumentError(("Unable to parse the input string " + date));
}
}
public DateTime? FromDate { get; set;}
public DateTime? TryParse(string text)
{
DateTime date;
if (DateTime.TryParse(text, out date))
{
return date;
}
else
{
return null;
}
}
很明显,你会想创建额外的构造函数,并可能有一个匹配类型构造作为默认
你有“价值”的一个例子 – CatchingMonkey
值类型的'DateTime'不呢?键入'string'。 –