why c# disallows to assign SqlDatetime.MinValue to datetime but allows comparison -


the following code compiles fine comparison operator.

if(datetimevariable > sqldatetime.minvalue) //compiles ok. datetimevariable of type datetime { } 

however, following code fails compile.

datetime datetimevariable=sqldatetime.minvalue; //throws exception , cannot convert source type sqldatetime datetime. obvious. 

my question why comparison allowed between sqldatetime , datetime types not assignment. (unless comparison operators doing implicit conversion.)

i'm guessing must missing basic.

there's implicit conversion in sqldatetime takes care of converting datetime sqldatetime without additional work:

public static implicit operator sqldatetime(datetime value) {     return new sqldatetime(value); }  // sqldatetime mysqldate = datetime.now 

what must happening datetimevariable being implicitly converted datetime sqldatetime comparison:

if (datetimevariable > sqldatetime.minvalue) {     // if datetimevariable, after conversion sqldatetime, greater     //  sqldatetime.minvalue, code executes } 

but in case of following code, there's nothing allows stuff sqldatetime datetime variable, doesn't allow it.

datetime datetimevariable = sqldatetime.minvalue;  // fails 

cast initial value , compile okay, there's chance you're going lose valuable information part of sqldatetime not datetime.

datetime datetimevariable = (datetime)sqldatetime.minvalue; 

Comments