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

questionAnswers(5)

yourAnswerToTheQuestion