C # vs VB.NET - Umgang mit Nullstrukturen

Ich bin darauf gestoßen und habe mich gefragt, ob jemand erklären könnte, warum dies in VB.NET funktioniert, wenn ich davon ausgehen würde, dass es fehlschlägt, genau wie 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?

Ist nichts anders als null Nothing! = Null - LOL?), oder sind das nur verschiedene Möglichkeiten, um die gleiche Situation zwischen den beiden Sprachen zu handhaben?

Warum oder was wird zwischen den beiden unterschiedlich gehandhabt, wodurch dies in einem okay ist, in dem anderen jedoch nicht?

[Aktualisieren

Gegeben einige der Kommentare, habe ich dies ein bisschen mehr durcheinander gebracht ... es scheint, als ob Sie tatsächlich Nullable verwenden müssen, wenn Sie zulassen möchten, dass etwas in VB.NET null ist ... also 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 verrückt..

Antworten auf die Frage(10)

Ihre Antwort auf die Frage