Rien n'égale la Chaîne.Vide, null n'est pas égale à la Chaîne.Vide, ce qui me manque ici?

Dans un mélange de code du projet (VB et C#), nous avons le débogage de certains vieux Visual Basic code comme ceci:

If Request.Params("xxx") <> "" Then
   'do something

Je considère que c'est un bogue de la Demande.Params pourrait être null, auquel cas la déclaration ai faux, ce qui n'était pas l'idée.

Alors j'ai pensé. Je viens de découvrir -- encore -- que VB est Nothing et de C# null ne sont pas les mêmes choses et Nothing n'est pas le même que null. En fait:

if(String.Empty == null)          //in C# this is always false (correct)
If String.Empty = Nothing Then    ' in VB this is always true (????)

Comment est-ce même possible? C'est une descendante de problème de compatibilité?

OriginalL'auteur Abel | 2010-06-28