Methods 从DateTime返回类型为的方法返回null

Methods 从DateTime返回类型为的方法返回null,methods,nullable,Methods,Nullable,我正在尝试使用SqliteDataReader读取数据库记录。不幸的是,如果my db中的某些日期为null或空,则使用以下方法: GetDateTime() GetString() 抛出类型为System.InvalidCastException的异常。我考虑扩展DataReader类: public static DateTime TryGetDateTime(this SQLiteDataReader rdr, int n) { DateTime ? dt = new Date

我正在尝试使用
SqliteDataReader
读取数据库记录。不幸的是,如果my db中的某些日期为null或空,则使用以下方法:

  • GetDateTime()

  • GetString()

抛出类型为
System.InvalidCastException
的异常。我考虑扩展
DataReader
类:

public static DateTime TryGetDateTime(this SQLiteDataReader rdr, int n)
{
    DateTime ? dt = new DateTime();
    try
    {
        dt = rdr.GetDateTime(n);
    }
    catch(System.InvalidCastException)
    {
        dt = null;
    }
    return dt;
} 

无法编译此扩展方法,因为默认情况下,
DateTime
不是可为空的数据类型。如果你能帮助我克服这个问题,我将不胜感激。如果可能,我希望
TryGetDateTime()
返回
DateTime
,如果引发异常,则返回null。一般退货类型是否适用于这种情况

什么意思是“不能编译为日期时间”?编译器说什么?或者是“此扩展方法无法编译,因为DateTime在默认情况下不是可为null的数据类型。”引发的错误?return dt变为红色Swiggly-无法将null转换为DateTime,因为它是不可为null的值类型