私はC#dynamic
というキーワードにはかなり新しいです。私のプロジェクトの1つでは、私はそれを試してみて、予想外の動作に遭遇しました。私は、次のコードでの状況を再現するために管理:ダイナミックは戻り値の型を尊重しません
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
のように、戻り値の型宣言が何とか無視されます。 var
とdynamic
を併用しないでください。
@PoweredByOrange NULL可能は構造体です。 –