Freitag, Dezember 13, 2019

Wie set null, um eine GUID-Eigenschaft

Ich habe ein Objekt vom Typ Mitarbeiter, das hat eine Guid-Eigenschaft. Ich weiß, wenn ich will, um die Einstellung auf null-ich muss zu definieren, mein type-Eigenschaft als null-Werte zulässt Nullable<Guid> prop oder Guid? prop.

Aber in meinem Fall bin ich nicht in der Lage, ändern Sie den Typ der prop, damit es bleibt, wie Guid geben und meine Kollegin und ich, die wir nicht wollen, verwenden Sie die Guid.Leer.

Gibt es eine Möglichkeit, meine Eigenschaft als null oder string.leer um restablish das Feld in der Datenbank als null.

Ich habe ein Mechanismus zur Transformation von string.leer für null, aber ich werde vieles verändern, wenn sich das ändern würde, zu akzeptieren, eine leere guid zu null.

Jede Hilfe bitte!

  • Ein Guid ist ein struct diese kann nicht null sein. Sie müssen verwenden Sie die nullable-Typ. Entweder mit Guid? oder Nullable<Guid>. Es gibt keinen anderen Weg.
  • Wenn ich etwas wie „ich weiß, ich sollte dies tun, aber ich kann nicht“, genau dort zu stoppen. Ja, Sie können und Sie sollten. Warum würden Sie dazu, dass Sie sich eine Welt der verletzt durch hacking Zeug?

8 Kommentare

  1. 47

    Gibt es eine Möglichkeit, meine Eigenschaft als null oder string.leer um restablish das Feld in der Datenbank als null.

    Nicht. Weil es nicht auf null gesetzt werden. Wenn Sie wollen, dass es null-Werte zulässt, müssen Sie Nullable<Guid> – wenn Sie nicht, gäbe es keinen Sinn, mit Nullable<T> mit zu beginnen. Du hast eine grundlegende Problem hier – was Sie eigentlich wissen, da Sie Ihren ersten Absatz. Sie habe gesagt, „ich weiß, wenn ich will, zu erreichen, muss ich B – ich möchte aber erreichen, ohne dabei B.“ Das ist unmöglich per definition.

    Die nächstgelegene Sie bekommen können, ist die Verwendung eines bestimmten GUID stehen für eine null-Wert – Guid.Empty (auch als default(Guid) gegebenenfalls, z.B. für den Standard-Wert ein optionaler parameter) wird der offensichtliche Kandidat, aber Sie haben abgelehnt, nicht näher spezifizierte Gründe.

    • Und etwas näher, es ist keine null-Werte zulassen, weil es eine Struktur und damit einen Wert geben. Wert-Typen können nicht null sein. Nullable<T> können, wickeln Sie einen Werttyp in einen anderen Wert geben, die darstellen können, die einen null-Wert. Wenn Sie waren, um es Nullable<Guid> oder Guid? kurz, Sie repräsentieren die DB-Seite als UNIQUEIDENTIFIER NULL
    • Nein, du hast falsch verstanden Nullable<T> – das ist ein Wert zu geben, aber es hat einen Wert, der die Abwesenheit eines verpackten Wert. Nullable<T> wäre viel weniger angenehm, wenn es wirklich ein Referenz-Typ.
    • Genial, ich wusste gar nicht, dass. Ich werde zerlegen und starren auf es jetzt. Vielen Dank für die Kostenlose Lektion. 🙂 Auf einer seitlichen Anmerkung, warum würde es sein viel weniger angenehm als Referenz geben?
    • Weil dann müsstest du eine Instanz erstellen (auf dem heap) für jeden Wert, sondern als der Wert, der als „inline“ – das würde dazu führen, dass mehr GC Druck.
    • Ich kann nicht verwenden Guid.Leer, weil ich will, dass es einen default-Wert für parameter der Methode. Als compiler-Punkte-out „- Default-parameter-Wert für X muss eine compile-Zeit-Konstante“!
    • Sie können default(Guid) für, die. Es entspricht Guid.Empty.
    • Danke. Wenn Sie aktualisieren Sie die Antwort auf diese wäre hilfreich für einige Menschen.

  2. 19
    Guid? myGuidVar = (Guid?)null;

    Könnte es sein. Unnötige casting nicht erforderlich.

    Guid? myGuidVar = null;
    • Interessante Bemerkung, dass, wenn Sie eine null-Guid, es sollte betoniert sein als null überall (ich meine auch als parameter in eine Methode).
    • Dies half mir, wo die db gibt eine strring, Modell erwartet Nullable GUID UserRoleID = String.IsNullOrEmpty(userrole.RoleId) ? (Guid?)null : new Guid(userrole.RoleId); Dank
    • Wie haben Sie diese erhalten 18 upvotes, wenn die Frage klar ist es nicht eine gültige Antwort? War diese zusammengeführt aus einer anderen Frage?
  3. 9

    Wählen Sie Ihr Gift – wenn Sie nicht ändern Sie den Typ der Eigenschaft auf null sein, dann sind Sie gehen zu müssen, verwenden Sie ein „Magie“ – Wert auf NULL stellen. Guid.Empty scheint so gut wie keine, es sei denn, Sie haben einige spezifische Grund für die nicht wollen, es zu benutzen. Zweite Wahl wäre Guid.Parse("ffffffff-ffff-ffff-ffff-ffffffffffff") aber das ist viel hässlicher IMHO.

    • danke! seine gute
  4. 2

    Können Sie typeof(Guid), "00000000-0000-0000-0000-000000000000" für den Standardwert der Eigenschaft an.

  5. 0

    können Sie machen guid-Variablen zu akzeptieren, die null zunächst mit ? Betreiber verwenden Sie dann Guid.Leer oder typecast auf null mit (Guid?)null;

    zB:

     Guid? id = Guid.Empty;

    oder

     Guid? id =  (Guid?)null;
    • Die Frage, die klar besagt, dass Sie dies nicht tun.

Kostenlose Online-Tests

Letzte Fragen

Tun ItemView löst Blase?

Ich habe eine CompositeView für eine Tabelle. Ich habe Trigger-set in der Kind-ItemView für jede Zeile... var TableRow = Marionette.ItemView.extend({ tagName:...

Wie kann ich untersuchen, WCF was 400 bad request über GET?

Die folgenden WCF-endpoint funktioniert gut mit dem WCF test client: AssetList ListFlaggedAssets(short processCode, string platform, string endpoint = "null", string portalId = "null", int...

Bei der Verwendung von UUIDs, sollte ich auch mit AUTO_INCREMENT?

Wir bauen eine neue web-app, die eine offline-iPad - /Android-app-version auf einer Reihe von lokalen Geräten, die Einsätze mit neuen Daten. Als solche benötigen...

Actionscript-Objekt, das verschiedene Eigenschaften

Wie kann ich die Anzahl der Eigenschaften in einer generischen Actionscript-Objekt? (Wie die Array-Länge) InformationsquelleAutor Fragsworth | 2011-01-15

Wie plot mehrere Graphen und nutzen Sie die Navigations-Taste im [matplotlib]

Die neueste version von matplotlib erstellt automatisch Navigations-buttons unter den graph. Aber die Beispiele, die ich finden alles im Internet zeigen, wie erstellen Sie...