Это заставляет меня задуматься, почему Guid в .NET не имеет IsNullOrEmpty()
метода (где пустой означает все нули)
Мне это нужно в нескольких местах моего кода ASP.NET MVC при написании REST API.
Или я чего-то упускаю, потому что никто в Интернете не просил того же?
c#
asp.net-mvc
Гаутам Джайн
источник
источник
Guid.Empty
Ответы:
Guid
является типом значения , поэтому переменная типаGuid
не может иметь значение null для начала. Если вы хотите узнать, совпадает ли он с пустым идентификатором, вы можете просто использовать:источник
if (nullableGuid == null || nullableGuid == Guid.Empty)
... или создать свой собственный метод расширения, если хотите. По-видимому, это случается достаточно редко, и для большинства людей оно того не стоит.public static bool IsNullOrDefault<T>(this T? self) where T : struct { return !self.HasValue || self.Value.Equals(default(T)); }
Во-первых,
Guid
не допускает значения NULL. Вы можете проверить:что эквивалентно:
источник
myGuid == default
Вот простой метод расширения для Guid, допускающего значение NULL.
ОБНОВИТЬ
Если вы действительно хотите использовать это везде, вы можете написать другой метод расширения для обычного Guid. Он никогда не может быть нулевым, поэтому некоторым это не понравится ... но он служит той цели, которую вы ищете, и вам не нужно знать, работаете ли вы с Guid? или Guid (удобно для рефакторинга и т. д.).
Теперь вы можете использовать его
someGuid.IsNullOrEmpty();
во всех случаях, используете ли вы Guid или Guid ?.Как я уже сказал, некоторые люди будут жаловаться на именование, потому что
IsNullOrEmpty()
подразумевает, что значение может быть нулевым (когда это невозможно). Если вы действительно хотите, придумать другое имя для расширения , например ,IsNothing()
или ,IsInsignificant()
или каким - то :)источник
Вы можете сделать метод расширения для Guid, чтобы добавить функциональность IsEmpty:
источник
g = new Guid()
фактически создаст пустой гид. Вы собирались писатьg = Guid.NewGuid()
?Как отмечали другие, не вся предпосылка вопроса. C #
Guid
не допускает значения NULL. ОднакоGuid?
есть. Чистый способ проверки , еслиGuid?
этоnull
илиGuid.Empty
является чеком , если результатGetValueOrDefault()
естьGuid.Empty
. Например,источник
Вы знаете, я все время вижу подобные утверждения
но это просто НЕПРАВДА.
Согласны, вы не можете программно установить Guid равным null, но когда какой-то SQL извлекает UniqueIdentifier и сопоставляет его с Guid, и если это значение равно null в db, значение появляется как null в C #.
источник