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.Empty
Respuestas:
Guid
es un tipo de valor , por lo que una variable de tipoGuid
no 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,
Guid
no admite nulos. Podrías comprobar:que es equivalente a:
fuente
myGuid == default
A 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 #
Guid
no acepta valores NULL. Sin embargo, loGuid?
es. Una forma limpia de comprobar si aGuid?
esnull
oGuid.Empty
es 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