Cela me laisse me demander pourquoi Guid dans .NET n'a pas de IsNullOrEmpty()
méthode (où vide signifie tous les zéros)
J'en ai besoin à plusieurs endroits dans mon code ASP.NET MVC lors de l'écriture de l'API REST.
Ou est-ce que je rate quelque chose parce que personne sur Internet ne l’a demandé?
c#
asp.net-mvc
Gautam Jain
la source
la source
Guid.Empty
Réponses:
Guid
est un type valeur , donc une variable de typeGuid
ne peut pas être nulle pour commencer. Si vous voulez savoir si c'est le même que le guid vide, vous pouvez simplement utiliser:la source
if (nullableGuid == null || nullableGuid == Guid.Empty)
... ou créer votre propre méthode d'extension si vous le souhaitez vraiment. Vraisemblablement, cela arrive assez rarement pour que la plupart des gens ne le vaille pas.public static bool IsNullOrDefault<T>(this T? self) where T : struct { return !self.HasValue || self.Value.Equals(default(T)); }
D'une part,
Guid
n'est pas nullable. Vous pouvez vérifier:ce qui équivaut à:
la source
myGuid == default
Voici une méthode d'extension simple pour un Guid nullable.
METTRE À JOUR
Si vous voulez vraiment l'utiliser partout, vous pouvez écrire une autre méthode d'extension pour un Guid standard. Cela ne peut jamais être nul, donc certaines personnes n'aimeront pas cela ... mais cela sert le but que vous recherchez et vous n'avez pas besoin de savoir si vous travaillez avec Guid? ou Guid (bien pour le re-factoring, etc.).
Vous pouvez désormais utiliser
someGuid.IsNullOrEmpty();
dans tous les cas, que vous utilisiez Guid ou Guid ?.Comme je l'ai dit, certaines personnes se plaindront de la dénomination car cela
IsNullOrEmpty()
implique que la valeur pourrait être nulle (quand elle ne le peut pas). Si vous le vouliez vraiment, trouvez un nom différent pour les extensions commeIsNothing()
ouIsInsignificant()
ou autre :)la source
Vous pouvez créer une méthode d'extension pour Guid pour ajouter la fonctionnalité IsEmpty:
la source
g = new Guid()
créera en fait un guid vide. Aviez-vous l'intention d'écrireg = Guid.NewGuid()
?Comme d'autres l'ont souligné, la prémisse de la question n'est pas tout là. C #
Guid
n'est pas nullable. Cependant,Guid?
c'est. Une manière propre de vérifier si aGuid?
estnull
ouGuid.Empty
est en vérifiant si le résultat deGetValueOrDefault()
estGuid.Empty
. Par exemple,la source
Tu sais que je vois ces déclarations comme celle-ci tout le temps
mais ce n'est tout simplement PAS VRAI.
D'accord, vous ne pouvez pas définir par programme un Guid sur null, mais lorsque certains SQL extrait un UniqueIdentifier et le mappe à un Guid, et si cette valeur est nulle dans la base de données, la valeur apparaît comme null dans le C #.
la source