Tôi gặp phải vấn đề này ngày hôm nay và không biết tại sao trình biên dịch C # không gặp lỗi.
Int32 x = 1;
if (x == null)
{
Console.WriteLine("What the?");
}
Tôi bối rối không biết làm thế nào mà x có thể là null. Đặc biệt là vì bài tập này chắc chắn gây ra lỗi trình biên dịch:
Int32 x = null;
Có khả năng x có thể trở thành null, Microsoft chỉ quyết định không đưa kiểm tra này vào trình biên dịch, hay nó đã bị bỏ lỡ hoàn toàn?
Cập nhật: Sau khi lộn xộn với mã để viết bài viết này, đột nhiên trình biên dịch đưa ra cảnh báo rằng biểu thức sẽ không bao giờ đúng. Bây giờ tôi thực sự lạc lối. Tôi đặt đối tượng vào một lớp và bây giờ cảnh báo đã biến mất nhưng vẫn để lại câu hỏi, liệu một kiểu giá trị có thể kết thúc bằng null không.
public class Test
{
public DateTime ADate = DateTime.Now;
public Test ()
{
Test test = new Test();
if (test.ADate == null)
{
Console.WriteLine("What the?");
}
}
}
if (1 == 2)
. Công việc của trình biên dịch không phải là thực hiện phân tích đường dẫn mã; đó là mục đích của các công cụ phân tích tĩnh và kiểm thử đơn vị.