Tôi khá mới đối với C# dynamic
từ khóa. Trong một trong những dự án của tôi, tôi đã cố gắng chơi với nó và gặp phải một số hành vi bất ngờ. Tôi quản lý để tạo lại tình hình với đoạn mã sau:Động không tôn trọng loại trả về
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();
}
}
tôi nhận được một RuntimeBinderException
nói
'System.DateTime' không chứa một định nghĩa cho 'Giá trị'.
Vì vậy, biến date
được coi là DateTime
thay vì DateTime?
.
Có vẻ như dynamic
bằng cách nào đó bỏ qua khai báo loại trả về. Tôi có nên tránh sử dụng var
với dynamic
không?
@PoweredByOrange Nullable là một struct. –