To sprawia, że zastanawiam się, dlaczego Guid w .NET nie ma IsNullOrEmpty()
metody (gdzie puste oznacza wszystkie zera)
Potrzebuję tego w kilku miejscach w moim kodzie ASP.NET MVC podczas pisania interfejsu API REST.
A może coś mi brakuje, ponieważ nikt w Internecie nie prosił o to samo?
c#
asp.net-mvc
Gautam Jain
źródło
źródło
Guid.Empty
Odpowiedzi:
Guid
jest typem wartości , więc zmienna typuGuid
nie może mieć wartości null na początku. Jeśli chcesz wiedzieć, czy jest taki sam jak pusty guid, możesz po prostu użyć:źródło
if (nullableGuid == null || nullableGuid == Guid.Empty)
... lub stworzyć własną metodę rozszerzenia, jeśli naprawdę chcesz. Przypuszczalnie pojawia się na tyle rzadko, że dla większości ludzi nie jest to tego warte.public static bool IsNullOrDefault<T>(this T? self) where T : struct { return !self.HasValue || self.Value.Equals(default(T)); }
Po pierwsze,
Guid
nie jest dopuszczalna. Możesz sprawdzić:co jest równoważne z:
źródło
myGuid == default
Oto prosta metoda rozszerzenia dla wartości Guid dopuszczającej wartość null.
AKTUALIZACJA
Jeśli naprawdę chcesz używać tego wszędzie, możesz napisać inną metodę rozszerzenia dla zwykłego Guid. Nigdy nie może być zerowe, więc niektórym ludziom się to nie spodoba ... ale spełnia to, czego szukasz i nie musisz wiedzieć, czy pracujesz z Guidem? lub Guid (miły do ponownego fakturowania itp.).
Teraz możesz używać
someGuid.IsNullOrEmpty();
we wszystkich przypadkach, niezależnie od tego, czy używasz Guid, czy Guid ?.Jak powiedziałem, niektórzy ludzie będą narzekać na nazewnictwo, ponieważ
IsNullOrEmpty()
sugeruje, że wartość może być zerowa (jeśli nie może). Jeśli naprawdę chciał, wymyślić inną nazwą dla rozszerzeń, takich jakIsNothing()
lubIsInsignificant()
czy cokolwiek :)źródło
Możesz utworzyć metodę rozszerzenia w Guid, aby dodać funkcję IsEmpty:
źródło
g = new Guid()
w rzeczywistości stworzy pusty guid. Czy miałeś zamiar pisaćg = Guid.NewGuid()
?Jak zauważyli inni, przesłanka tego pytania nie istnieje. C #
Guid
nie dopuszcza wartości null. JednakGuid?
jest. Czysty sposób sprawdzenia, czyGuid?
jest,null
czyGuid.Empty
jest, poprzez sprawdzenie, czy wynikGetValueOrDefault()
jestGuid.Empty
. Na przykład,źródło
Wiesz, że widzę takie stwierdzenia przez cały czas
ale to po prostu NIE PRAWDA.
Uzgodniono, że nie można programowo ustawić Guid na null, ale gdy niektóre SQL ściąga UniqueIdentifier i mapuje go na Guid, a jeśli ta wartość jest null w bazie danych, wartość pojawia się jako null w C #.
źródło