Ich bin ziemlich neu in C# dynamic
Stichwort. In einem meiner Projekte habe ich versucht, damit zu spielen und bin auf unerwartetes Verhalten gestoßen. Ich schaffte es, die Situation mit dem folgenden Code zu reproduzieren:Dynamic respektiert nicht Rückgabetyp
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();
}
}
ich RuntimeBinderException
'System.DateTime' sagen erhalten enthält keine Definition für 'Wert'.
So wird die Variable date
als DateTime
statt DateTime?
behandelt.
Es scheint dynamic
irgendwie ignoriert die Rückgabetyp-Deklaration. Sollte ich vermeiden, var
mit dynamic
zu verwenden?
@PoweredByOrange Nullable ist eine Struktur. –