me encontré con esto y me preguntaba si alguien podría explicar por qué esto funciona en VB.NET cuando yo esperaría que fallara, al igual que lo hace en C#C# y VB.NET - Tratamiento de Estructuras nulos
//The C# Version
struct Person {
public string name;
}
...
Person someone = null; //Nope! Can't do that!!
Person? someoneElse = null; //No problem, just like expected
Pero entonces en VB.NET ...
Structure Person
Public name As String
End Structure
...
Dim someone As Person = Nothing 'Wha? this is okay?
hay nada no es lo mismo como nulo (Nada = null -!? LOL), o se trata simplemente diferentes maneras de manejar la misma situación entre el ¿dos idiomas?
¿Por qué o qué se maneja de manera diferente entre los dos que hace que esto esté bien en uno, pero no en el otro?
[Actualización]
dado algunos de los comentarios, me metió con esto un poco más ... parece como si realmente tiene que utilizar anular si desea permitir que algo sea nula en VB .NET ... por ejemplo ...
'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'
demasiado extraño ...
Acabo de tropezar mientras transportaba algunos VB.NET a C# - me hace odiar a VB.NET que mucho más;). Gracias por profundizar en esto, y gracias a aquellos que respondieron. – Charles
Vea también http://stackoverflow.com/questions/5869661/why-can-i-not-check-if-datetime-is-nothing – jeroenh
@Charles, ¿Debería odiar C# por ser diferente de VB? Algunas personas resuelven problemas. Algunos culpan a los idiomas por ser diferentes. – Dima