C # против VB.NET - Обработка нулевых структур

Я натолкнулся на это и подумал, может ли кто-нибудь объяснить, почему это работает в VB.NET, когда я ожидал, что он потерпит неудачу, как это происходит в 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

Но тогда в VB.NET ...

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

Ничто не отличается от нуля (Ничего! = Ноль - LOL?)Или это просто разные способы решения одной и той же ситуации между двумя языками?

Почему или что обрабатывается по-разному между двумя, что делает это хорошо в одном, но не в другом?

[Обновить]

Учитывая некоторые комментарии, я немного больше об этом упомянул ... кажется, что вам действительно нужно использовать Nullable, если вы хотите, чтобы что-то было пустым в VB.NET ... так, например ...

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

Слишком странно...

Ответы на вопрос(0)

Ваш ответ на вопрос