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'
Слишком странно...