Ce code produit True
.ReSharper 5.x, HashSet Contient() et "Affectation null possible"
using System;
using System.Collections.Generic;
public class Default
{
public static void Main(string[] args)
{
HashSet<string> foo = new HashSet<string>();
foo.Add(null);
Console.WriteLine(foo.Contains(null));
}
}
Le null
dans mon contains() appel a un gribouillis bleu en dessous, avec l'avertissement suivant:
possible cession 'null' à l'entité marquée avec l'attribut 'NotNull'
Lorsque je suspend ReSharper, l'avertissement disparaît.
Pourquoi cet avertissement se produit-il? Étant donné que je peux ajouter null à un HashSet, ce qui est cassé à propos de mon vouloir vérifier null dans un HashSet?
EDIT: .NET 3.5, VS2010
ReSharper semble être cassé. Tout le reste semble bien: Votre code s'exécute sans exception, Reflector ne montre aucune vérification null ou aucun attribut NonNull pour HashSet .Add ou HashSet .Contains. –
dtb
devriez-vous vraiment ajouter Null à un HashSet? –
Dans mon code réel, le Contient (null) est dans une spécification qui vérifie que null, en fait, n'a * pas * été ajouté à un HashSet à un moment où le développeur pourrait être tenté de le faire. – lance