C # vs VB.NET - manipulação de estruturas nulas
Deparei com isso e queria saber se alguém poderia explicar por que isso funciona no VB.NET quando eu esperava que falhasse, assim como acontece em 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
Mas então no VB.NET ...
Structure Person
Public name As String
End Structure
...
Dim someone As Person = Nothing 'Wha? this is okay?
Nada é diferente de null (Nada! = Nulo - LOL?), ou são apenas maneiras diferentes de lidar com a mesma situação entre os dois idiomas?
Por que ou o que é tratado de maneira diferente entre os dois que faz com que tudo fique bem em um, mas não no outro?
[Atualizar]
Dados alguns comentários, eu mexi um pouco mais com isso ... parece que você realmente precisa usar o Nullable se quiser permitir que algo seja nulo no VB.NET ... então, por exemplo ...
'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'
Muito estranho...