Transfer of zero values ​​in one line Conditional

Just fictional code, but why doesn't it work? (since the variable dateis NULL)

DateTime? date = textBoxDate.Text != "" ? textBoxDate.Text : null;

Error: "There is no explicit conversion between System.DateTimeand<null>

+3
source share
5 answers

Try the following:

DateTime? date = String.IsNullOrEmpty(textBoxDate.Text) ? 
null as DateTime? : DateTime.Parse(textBoxDate.Text);
+4
source

(I assume that you actually have a conditional expression that makes more sense - Textseems to be a string property, and it doesn't make sense to assign it to a variable DateTime?.)

. , DateTime? - ​​ .

LHS, RHS... :

  • null , RHS
  • DateTime null, LHS.

- RHS , :

default(DateTime?)
(DateTime?) null
new DateTime?()

LHS DateTime?.

+2

null , as:

DateTime? date = textBoxDate.Text != "" ? textBoxDate.Text : null as DateTime?;

, textBoxDate Datetime?, ...

0

Well, I don’t know what your textBoxDate.Text class looks like , but I was able to make it work, compile and return the expected result.

    TextBox textBoxDate = new TextBox();
    textBoxDate.Text = string.Empty;
    DateTime? date = (textBoxDate.Text != "") ? (DateTime?)DateTime.Parse(textBoxDate.Text) : null;

I think a clear tide (DateTime?)is what you need

0
source

its just you just stop the original datetime throw? == type, not null values, datetime == with no? allow null values

DateTime date = textBoxDate.Text != "" ? textBoxDate.Text : null;
0
source

Source: https://habr.com/ru/post/1769752/


All Articles