Ich frage mich daher immer wieder, warum Guid in .NET keine IsNullOrEmpty()
Methode hat (wobei leer alle Nullen bedeutet).
Ich benötige dies an mehreren Stellen in meinem ASP.NET MVC-Code, wenn ich die REST-API schreibe.
Oder fehlt mir etwas, weil niemand im Internet danach gefragt hat?
c#
asp.net-mvc
Gautam Jain
quelle
quelle
Guid.Empty
Antworten:
Guid
ist ein Werttyp , daher kann eine Variable vom Typ zunächstGuid
nicht null sein. Wenn Sie wissen möchten, ob es mit der leeren Guid identisch ist, können Sie einfach Folgendes verwenden:quelle
if (nullableGuid == null || nullableGuid == Guid.Empty)
... oder Ihre eigene Erweiterungsmethode erstellen, wenn Sie wirklich wollen. Vermutlich kommt es selten genug vor, dass es sich für die meisten Menschen nicht lohnt.public static bool IsNullOrDefault<T>(this T? self) where T : struct { return !self.HasValue || self.Value.Equals(default(T)); }
Zum einen
Guid
ist nicht nullbar. Sie könnten überprüfen:was äquivalent ist zu:
quelle
myGuid == default
Hier ist eine einfache Erweiterungsmethode für eine nullfähige Guid.
AKTUALISIEREN
Wenn Sie dies wirklich überall verwenden möchten, können Sie eine andere Erweiterungsmethode für eine reguläre Guid schreiben. Es kann niemals null sein, also werden manche Leute das nicht mögen ... aber es erfüllt den Zweck, den Sie suchen und Sie müssen nicht wissen, ob Sie mit Guid arbeiten? oder Guid (schön zum Re-Factoring etc.).
Jetzt können Sie
someGuid.IsNullOrEmpty();
in allen Fällen verwenden, ob Sie Guid oder Guid? Verwenden.Wie ich bereits sagte, werden sich einige Leute über die Benennung beschweren, da dies
IsNullOrEmpty()
impliziert, dass der Wert null sein könnte (wenn dies nicht möglich ist). Wenn Sie wirklich wollten, kommen Sie mit einem anderen Namen für die Erweiterungen wieIsNothing()
oderIsInsignificant()
oder was auch immer :)quelle
Sie können Guid eine Erweiterungsmethode zuweisen, um IsEmpty-Funktionen hinzuzufügen:
quelle
g = new Guid()
wird in der Tat eine leere Guid erstellen. Wolltest du schreibeng = Guid.NewGuid()
?Wie andere betont haben, ist die Prämisse der Frage nicht alles. C #
Guid
ist nicht nullbar. IstGuid?
jedoch. Eine saubere Methode, um zu überprüfen, ob aGuid?
istnull
oderGuid.Empty
ist, indem überprüft wird, ob das Ergebnis vonGetValueOrDefault()
istGuid.Empty
. Z.B,quelle
Du weißt, ich sehe diese Aussagen die ganze Zeit so
aber es ist einfach nicht wahr.
Einverstanden, dass Sie eine Guid nicht programmgesteuert auf null setzen können. Wenn jedoch SQL einen UniqueIdentifier abruft und einer Guid zuordnet und dieser Wert in der Datenbank null ist, wird der Wert in C # als null angezeigt.
quelle