Esto me hace preguntarme por qué Guid en .NET no tiene un IsNullOrEmpty()método (donde vacío significa todos ceros)
Necesito esto en varios lugares de mi código ASP.NET MVC cuando escribo la API REST.
¿O me estoy perdiendo algo porque nadie en Internet ha pedido lo mismo?
c#
asp.net-mvc
Gautam Jain
fuente
fuente

Guid.EmptyRespuestas:
Guides un tipo de valor , por lo que una variable de tipoGuidno puede ser nula para empezar. Si desea saber si es lo mismo que el guid vacío, puede usar:fuente
if (nullableGuid == null || nullableGuid == Guid.Empty)... o crear su propio método de extensión si realmente lo desea. Es de suponer que aparece tan raramente que no vale la pena para la mayoría de las personas.public static bool IsNullOrDefault<T>(this T? self) where T : struct { return !self.HasValue || self.Value.Equals(default(T)); }Por un lado,
Guidno admite nulos. Podrías comprobar:que es equivalente a:
fuente
myGuid == defaultA continuación, se muestra un método de extensión simple para un Guid que acepta valores NULL.
ACTUALIZAR
Si realmente quisiera usar esto en todas partes, podría escribir otro método de extensión para un Guid normal. Nunca puede ser nulo, por lo que a algunas personas no les gustará esto ... pero cumple el propósito que estás buscando y no tienes que saber si estás trabajando con Guid. o Guid (bueno para refactorizar, etc.).
Ahora puedes usarlo
someGuid.IsNullOrEmpty();en todos los casos, ya sea que estés usando Guid o Guid ?.Como dije, algunas personas se quejarán del nombre porque
IsNullOrEmpty()implica que el valor podría ser nulo (cuando no puede). Si realmente quería, subir con un nombre diferente para las extensiones comoIsNothing()oIsInsignificant()o lo que sea :)fuente
Puede crear un método de extensión para Guid para agregar la funcionalidad IsEmpty:
fuente
g = new Guid()de hecho, creará una guía vacía. ¿Tenías la intención de escribirg = Guid.NewGuid()?Como han señalado otros, la premisa de la pregunta no está del todo ahí. C #
Guidno acepta valores NULL. Sin embargo, loGuid?es. Una forma limpia de comprobar si aGuid?esnulloGuid.Emptyes mediante comprobar si el resultado deGetValueOrDefault()esGuid.Empty. P.ej,fuente
Sabes que veo estas declaraciones como esta todo el tiempo
pero NO ES CIERTO.
De acuerdo, no puede programar un Guid en nulo, pero cuando algún SQL extrae un UniqueIdentifier y lo asigna a un Guid, y si ese valor es nulo en la base de datos, el valor aparece como nulo en C #.
fuente