Я наткнулся на это и подумал, не мог бы кто-нибудь объяснить, почему это работает в 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?
Ничто не отличается от null ( Nothing! = Null - LOL?) , или это просто разные способы обработки одной и той же ситуации между двумя языками?
Почему или что обрабатывается по-разному между двумя, что делает это хорошо в одном, но не в другом?
[Update]
Учитывая некоторые комментарии, я немного больше об этом подумал ... кажется, что вам действительно нужно использовать 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'
Слишком странно ...