我对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();
}
}
Run Code Online (Sandbox Code Playgroud)
我有一个RuntimeBinderException说法
'System.DateTime'不包含'Value'的定义.
因此变量date被视为DateTime而不是DateTime?.
看起来似乎dynamic忽略了返回类型声明.我应避免使用var有dynamic?
c# ×1