115 votes

Pourquoi n'y a-t-il pas de méthode Guid.IsNullOrEmpty()

Cela me permet de me demander pourquoi Guid dans .NET n'a pas de IsNullOrEmpty() (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 n'a demandé la même chose ?

261voto

Jon Skeet Points 692016

Guid est un type valeur , donc une variable de type Guid 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 :

 if (guid == Guid.Empty)

33voto

David Hedlund Points 66192

D'une part, Guid n'est pas nullable. Vous pouvez vérifier :

 myGuid == default(Guid)

ce qui équivaut à :

 myGuid == Guid.Empty

2voto

Yorye Nathan Points 7907

Vous pouvez créer une méthode d'extension à Guid pour ajouter la fonctionnalité IsEmpty :

 public static class GuidEx
{
    public static bool IsEmpty(this Guid guid)
    {
        return guid == Guid.Empty;
    }
}

public class MyClass
{
    public void Foo()
    {
        Guid g;
        bool b;

        b = g.IsEmpty(); // true

        g = Guid.NewGuid();

        b = g.IsEmpty; // false

        b = Guid.Empty.IsEmpty(); // true
    }
}

2voto

Craig Niles Points 21

Comme d'autres l'ont souligné, la prémisse de la question n'est pas là. C# Guid n'est pas nullable. Cependant, Guid? est. Un moyen propre de vérifier si un Guid? est null ou Guid.Empty est de vérifier si le résultat de GetValueOrDefault() est Guid.Empty . Par exemple,

 Guid? id;

// some logic sets id

if (Guid.Empty.Equals(guid.GetValueOrDefault()))
{
    // Do something
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X