Từ MSDN:
Từ khóa null là một chữ mà đại diện cho một tham chiếu null, một trong những không đề cập đến bất kỳ đối tượng
Để thử và làm cho nó một chút rõ ràng hơn trong các phiên bản cũ hơn của C#, một loại giá trị không thể là rỗng, nghĩa là, nó HAD có giá trị, nếu bạn không gán giá trị, bạn có một giá trị ngẫu nhiên tiềm ẩn, chẳng hạn như:
int i;
i++;
console.writeline(i);
trong các phiên bản cũ hơn của các đối tượng C# phải được khởi tạo nếu không chúng không có nghĩa là chúng không có tham chiếu đến bất kỳ đối tượng nào.
Bây giờ với các loại giá trị nullable trong C# 2.0+ bạn có thể có một int nullable điều đó có nghĩa rằng nếu bạn có mã này:
int? i;
i++;
console.writeline(i);
bạn sẽ thực sự có được một ngoại lệ tại i ++, vì tôi chưa bao giờ được khởi tạo bất cứ điều gì khác hơn là null. Nếu null là 0, mã này sẽ thực thi tốt vì nó chỉ đánh giá là 0 + 1, tuy nhiên đây là hành vi không chính xác.
Nếu null luôn 0 và bạn có aa int nullable, và bạn đã viết một số mã như:
int? i;
if (int == 0)
{
//do something
}
có một khả năng rất thực tế bạn có thể nhận được một số hành vi bất ngờ NẾU rỗng là giống như 0 vì không có cách nào trình biên dịch có thể phân biệt giữa int là null và int được đặt rõ ràng là 0.
Một ví dụ khác là làm rõ mọi thứ trong tâm trí tôi:
public int? AddNumbers(int? x, int? y)
{
if (x == null || y == null)
return null;
if (x == 0)
return y;
if (y == 0)
return x;
return x + y;
}
trong ví dụ này, thì rõ ràng rằng vô 0 là rất khác nhau, vì nếu bạn đã vượt qua trong 0 cho x hoặc y, và null là bình đẳng 0, sau đó mã ở trên sẽ không bao giờ nhận được để kiểm tra cho x == 0 hoặc y == 0, tuy nhiên nếu bạn chạy mã và vượt qua trong 0 cho x hoặc y, kiểm tra được thực thi.
Awesome này là chính xác những gì tôi đang tìm kiếm. – Alex
Đây là tất cả về 'Nullable' - đó là * không * về tham chiếu null. –
@Jon, bạn đang nói rằng việc tôi sử dụng từ "cá thể" là không chính xác? – RoadWarrior