我對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可空是一個結構。 –