UPDATECzy istnieje GUID.TryParse() w .NET 3.5?
Guid.TryParse jest dostępne w .NET 4.0
End Aktualizuj
Oczywiście nie ma GUID.TryParse publicznego() w .NET CLR 2.0.
Tak więc, szukałem wyrażeń regularnych [a także szukałem go w wyszukiwarce] i za każdym razem, gdy znalazłem jeden, był gorący argument w sekcji komentarzy o RegEx A nie działa, użyj RegEx B. Wtedy ktoś by napisz Regex C yadda yadda
Tak czy inaczej, Postanowiłem zrobić to, ale źle się z tym czuję.
public static bool IsGuid (string possibleGuid) {
try {
Guid gid = new Guid(possibleGuid);
return true;
} catch (Exception ex) {
return false;
}
}
Oczywiście ja nie lubię tego, ponieważ został wywiercony we mnie od samego początku, aby uniknąć rzucania wyjątków, jeśli możesz defensibly kod wokół niego.
Czy ktoś wie, dlaczego nie ma publicznego Guid.TryParse() w systemie .NET Framework?
Czy ktoś ma prawdziwe wyrazy regularne, które będą działać dla wszystkich identyfikatorów GUID?
Technika próbnego połowu może być zła, jeśli ta metoda jest wywoływana jako partie (w ciasnej pętli), a prawdopodobieństwo wyrzucenia wyjątku jest wysokie. Kiedyś profilowałem aplikację ASP.NET 1.1, która to zrobiła i po uaktualnieniu jej do int.TryParse .NET 2.0, wydajność wzrosła o około 30% (robił dużo połączeń int.Parse!). – RichardOD
Tak, to nie będzie pętla. Zasadniczo otrzymuję błędy "nieudanej konwersji do uniqueidentifier" itp., Więc chciałem zrobić coś więcej niż tylko sprawdzić, czy przekazywany ciąg znaków był pusty, czy nie. –
string Id = Guid.NewGuid(). ToString(); –