只是一个虚构的代码,但为什么这不起作用? (因为date
变量可以为空)
DateTime? date = textBoxDate.Text != "" ? textBoxDate.Text : null;
错误是“System.DateTime
和<null>
答案 0 :(得分:6)
试试这个:
DateTime? date = String.IsNullOrEmpty(textBoxDate.Text) ?
null as DateTime? : DateTime.Parse(textBoxDate.Text);
答案 1 :(得分:2)
(我假设实际上你有一个更有意义的条件 - Text
可能是一个字符串属性,将它赋给{{1}没有多大意义变量。)
编译器不知道条件表达式的类型。它没有考虑到DateTime?
变量的赋值事实 - 它只是试图找到正确的类型。
现在表达式的类型必须 LHS的类型,或 RHS的类型......但是:
DateTime?
没有类型,因此它不能是RHS的类型null
到DateTime
没有转换,因此它也不能是LHS的类型。解决这个问题的最简单方法是给RHS一个真实的类型,所以:
null
您当然可以改为default(DateTime?)
(DateTime?) null
new DateTime?()
类型的LHS。
答案 2 :(得分:0)
null
可以是任何引用类型,您必须将其强制转换或使用as
运算符:
DateTime? date = textBoxDate.Text != "" ? textBoxDate.Text : null as DateTime?;
假设textBoxDate可以被隐含地转换为Datetime ?,这是值得怀疑的......
答案 3 :(得分:0)
好吧,我不知道你的 textBoxDate.Text 类是什么样的,但我能够让它工作,编译并返回预期的结果。
TextBox textBoxDate = new TextBox();
textBoxDate.Text = string.Empty;
DateTime? date = (textBoxDate.Text != "") ? (DateTime?)DateTime.Parse(textBoxDate.Text) : null;
我认为(DateTime?)
的明确演员是您需要的
答案 4 :(得分:0)
你很容易退出初始演员表 约会时间 ? ==键入not null值permit, datetime ==没有了?允许空值
DateTime date = textBoxDate.Text != "" ? textBoxDate.Text : null;