tôi chạy qua đây và đã tự hỏi nếu ai đó có thể giải thích tại sao điều này làm việc trong VB.NET khi tôi mong chờ nó nên thất bại, giống như nó trong C#C# vs VB.NET - Xử lý các cấu trúc rỗng
//The C# Version
struct Person {
public string name;
}
...
Person someone = null; //Nope! Can't do that!!
Person? someoneElse = null; //No problem, just like expected
Nhưng sau đó trong VB.NET ...
Structure Person
Public name As String
End Structure
...
Dim someone As Person = Nothing 'Wha? this is okay?
is Nothing không giống như null (không có gì = null -!? LOL), hoặc là này cách khác nhau chỉ xử lý tình huống tương tự giữa hai ngôn ngữ?
Lý do tại sao hoặc những gì được xử lý khác nhau giữa hai điều làm cho điều này ổn thỏa trong một, nhưng không phải là điều kia?
[Cập nhật]
Với một số ý kiến, tôi sai lầm với điều này hơn một chút ... có vẻ như là nếu bạn thực sự phải sử dụng Nullable nếu bạn muốn cho phép một cái gì đó để được null trong VB NET ... do đó, ví dụ ...
'This is false - It is still a person'
Dim someone As Person = Nothing
Dim isSomeoneNull As Boolean = someone.Equals(Nothing) 'false'
'This is true - the result is actually nullable now'
Dim someoneElse As Nullable(Of Person) = Nothing
Dim isSomeoneElseNull As Boolean = someoneElse.Equals(Nothing) 'true'
quá lạ ...
Tôi chỉ tình cờ gặp trong khi chuyển một số VB.NET sang C# - khiến tôi ghét VB.NET nhiều hơn nữa;). Cảm ơn bạn đã đào sâu vào điều này và cảm ơn những người đã trả lời. – Charles
Xem thêm http://stackoverflow.com/questions/5869661/why-can-i-not-check-if-datetime-is-nothing – jeroenh
@Charles, tôi có nên ghét C# vì khác với VB không? Một số người giải quyết vấn đề. Một số ngôn ngữ đổ lỗi cho là khác nhau. – Dima