2010-10-04 7 views
1
public static int SafeCount<T>(this IList list) 
    { 
     return list != null ? list.Count : 0; 
    } 

Ce que je veux demander est ce que dois-je appeler cette méthode? SafeCount? NullSafeCount?Faire un compte qui prend en compte la vérification nulle - Comment dois-je l'appeler? SafeCount?

Pouvez-vous trouver quelque chose de plus court mais non-ambigus?

+0

Je suggère une surcharge aussi bien 'IEnumerable ' (donc fonctionnera pour toutes les collections) et de changer celui-ci à 'ICollection ' prendre dans une plus large choix de types de collections avec la propriété 'Count'. – Richard

+0

BuggyCount, je dirais. CountIfNotNull décrit ce qu'il fait. –

+0

@Richard: Dépend de l'utilisation. Parce qu'il ne voudra peut-être pas énumérer la collection en utilisant l'extension count. –

Répondre

0

Cela pourrait être l'influence de linq sur moi, mais je serais tenté de l'appeler 'CountOrDefault'. Pas vraiment plus court si ...

(Note: Pourquoi IList et non IEnumerable curiosité)

+0

Je vais devoir compter. – halviingston

+0

Dans ce cas, vous pouvez utiliser la fonction Count() d'IEnumerable. Je peux comprendre ne pas vouloir matérialiser le IEnumerable, mais vous devez le faire quand même pour créer le IList nécessaire pour utiliser la fonction ci-dessus. – diceguyd30

+0

Un nom plus court possible: 'CountOr0' – diceguyd30

2

Pour aligner avec d'autres méthodes dans le cadre que je l'appellerais GetCountOrDefault ou possible CountOrDefault. Méthodes similaires à partir de laquelle je chercherais pour la prédécence.

  • Enumerable.FirstOrDefault
  • Enumerable.SingleOrDefault
  • Enumerable.LastOrDefault
  • Enumerable.ElementAtOrDefault
  • Nullable.GetValueOrDefault

Une autre option consiste à coder l'ambiguïté dans le type de retour à la place du nom de la méthode en le faisant revenir un int? au lieu d'un int.

public static int? GetCount(this IList list) { 
    return list != null ? (int?)list.Count : null; 
} 
+1

Je vois où vous allez avec cela .. hmm ne sais pas comment je me sens à ce sujet. – halviingston

+0

@halviingston, je suis d'accord que c'est un peu étrange au début. Mais sans une raison impérieuse je préférerais precedenc sur un nouveau nom. Dans ces exemples, le 'Nullable ' est le plus convaincant pour moi car il décrit un scénario très similaire. – JaredPar

+0

@halviingston a ajouté une autre suggestion. – JaredPar

Questions connexes