204 votes

Comment convertir une chaîne en un Guid

Je n'ai pas trouvé la méthode TryParse pour le Guid. Je me demande comment les autres de gérer la conversion d'un guid dans la chaîne de format dans un type de guid.

Guid Id;
try
{
    Id = new Guid(Request.QueryString["id"]);
}
catch
{
    Id = Guid.Empty;
}

351voto

leppie Points 67289
new Guid(string)

Vous pouvez également regarder à l'aide d'un TypeConverter.

133voto

Behrooz Points 303

utilisez un code comme ceci:

new Guid("9D2B0228-4D0D-4C23-8B49-01A698857709")

instade de "9D2B0228-4D0D-4C23-8B49-01A698857709", vous pouvez configurer votre chaîne de valeur

30voto

juFo Points 3779
Guid.TryParse()

ou

Guid.TryParseExact()

dans .NET 4.0 (ou 3.5?)

8voto

Brian Rudolph Points 3403

Ainsi, vous obtenez assez proche, et je l'utilise dans la production et n'ont jamais eu une collision. Cependant, si vous regardez le constructeur pour un guid dans le réflecteur, vous verrez tous les contrôles qu'il effectue.

 public static bool GuidTryParse(string s, out Guid result)
    {
        if (!String.IsNullOrEmpty(s) && guidRegEx.IsMatch(s))
        {
            result = new Guid(s);
            return true;
        }

        result = default(Guid);
        return false;
    }

    static Regex guidRegEx = new Regex("^[A-Fa-f0-9]{32}$|" +
                          "^({|\\()?[A-Fa-f0-9]{8}-([A-Fa-f0-9]{4}-){3}[A-Fa-f0-9]{12}(}|\\))?$|" +
                          "^({)?[0xA-Fa-f0-9]{3,10}(, {0,1}[0xA-Fa-f0-9]{3,6}){2}, {0,1}({)([0xA-Fa-f0-9]{3,4}, {0,1}){7}[0xA-Fa-f0-9]{3,4}(}})$", RegexOptions.Compiled);

3voto

joseph.ferris Points 8468

Malheureusement, il n'y a pas un TryParse() équivalent. Si vous créez une nouvelle instance d'un Système.Guid et passez la chaîne de valeur, vous pouvez prendre les trois exceptions possibles, il serait jeter si elle n'est pas valide.

Ceux-ci sont:

  • ArgumentNullException
  • FormatException
  • OverflowException

J'ai vu certaines implémentations où vous pouvez faire un regex sur la chaîne avant la création de l'instance, si vous essayez juste de le valider et de ne pas le créer.

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