UPDATEЕсть ли GUID.TryParse() в .NET 3.5?
Guid.TryParse доступен в .NET 4.0
END UPDATE
Очевидно, что нет общественного GUID.TryParse() в .NET CLR 2.0.
Итак, я изучал регулярные выражения [а также поиск в googling, чтобы найти их], и каждый раз, когда я его нашел, был горячий аргумент в разделе комментариев о RegEx A, который не работает, используйте RegEx B. Тогда кто-то будет напишите Regex C yadda yadda
Так или иначе, я решил сделать это, но мне плохо.
public static bool IsGuid (string possibleGuid) {
try {
Guid gid = new Guid(possibleGuid);
return true;
} catch (Exception ex) {
return false;
}
}
Очевидно, что я не очень люблю это, так как это было просверлено в меня с первого дня, чтобы избежать бросание исключения, если вы можете defensibly код вокруг него.
Кто-нибудь знает, почему нет открытого Guid.TryParse() в .NET Framework?
Есть ли у кого-нибудь реальное регулярное выражение, которое будет работать для всех GUID?
Метод try catch может быть плохим, если этот метод называется лотом (в узком цикле), и существует высокая вероятность исключения. Я когда-то профилировал приложение ASP.NET 1.1, которое это сделало, и после его обновления до .NET 2.0 в int.TryParse производительность увеличилась примерно на 30% (в ней было много запросов int.Parse!). – RichardOD
Да, это не будет цикл. В основном я получаю ошибки «неудачного преобразования в uniqueidentifier» и т. Д., Поэтому я хотел сделать что-то большее, чем просто проверить, была ли пустая строка пуста или нет. –
строка Id = Guid.NewGuid(). ToString(); – 2012-02-13 12:59:51