C# vs VB.NET - Umgang mit null-Strukturen

Ich lief über diese und wollte Fragen ob mir jemand erklären könnte, warum das funktioniert VB.NET wenn ich erwarten würde, sollte er Versagen, so wie es in C#

//The C# Version

struct Person {
    public string name;
}
...
Person someone = null; //Nope! Can't do that!!
Person? someoneElse = null; //No problem, just like expected

Aber dann in VB.NET...

Structure Person
    Public name As String
End Structure
...
Dim someone As Person = Nothing 'Wha? this is okay?

Nichts ist nicht dasselbe wie null (Nichts != null - LOL?)oder ist das einfach nur unterschiedliche Wege im Umgang mit der gleichen situation zwischen den beiden Sprachen?

Warum oder was wird anders behandelt, zwischen den beiden, das macht das okay, aber das andere nicht?

[Update]

Gegeben, einige der Kommentare, habe ich Durcheinander gebracht mit diesem ein bisschen mehr... es scheint, als ob Sie tatsächlich haben, um die Verwendung von Nullable, wenn Sie wollen, zu erlauben, etwas zu null VB.NET... so zum Beispiel...

'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'

Zu komisch...

InformationsquelleAutor der Frage Hugoware | 2008-11-19

Schreibe einen Kommentar