我对C#相当陌生#dynamic
关键字。在我的其中一个项目中,我尝试使用它,并遇到一些意外的行为。我设法再现与下面的代码的情况:动态不尊重退货类型
class Program
{
static DateTime? DateOnly(DateTime? time)
{
return time.HasValue ? (System.DateTime?)time.Value.Date : null;
}
static void Main(string[] args)
{
dynamic now = System.DateTime.Now;
var date = DateOnly(now);
Console.WriteLine(date.Value); // error thrown here
Console.Read();
}
}
我得到一个RuntimeBinderException
说
“System.DateTime的”不包含“价值”的定义。
所以可变date
被视为DateTime
代替DateTime?
。
它看起来像dynamic
某种程度上忽略返回类型声明。 我是否应该避免在dynamic
处使用var
?
@PoweredByOrange可空是一个结构。 –