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