Я натолкнулся на это и подумал, может ли кто-нибудь объяснить, почему это работает в 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?
Разве Nothing не то же самое, что null (Nothing! = Null - 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'
Слишком странно...