Я столкнулся с этим и задавался вопросом, может ли кто-нибудь объяснить, почему это работает в VB.NET, когда я ожидаю, что он потерпит неудачу, как в С#
//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?), или это просто разные способы обработки одной и той же ситуации между двумя языками?
Почему или что обрабатывается по-разному между двумя, что делает это хорошо в одном, но не в другом?
[Обновление]
Учитывая некоторые из комментариев, я испортил это немного больше... кажется, что вам действительно нужно использовать 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'
Слишком странно...