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
Post a Comment