Stellen Sie sicher, dass Enum als Zahl gedruckt wirdC#

Ein Treffpunkt für C#-Programmierer
Anonymous
 Stellen Sie sicher, dass Enum als Zahl gedruckt wird

Post by Anonymous »

Ich versuche, die Lesbarkeit des Codes zu verbessern. Wenn ich also „magische Zahlen“ im Code finde, versuche ich, sie durch etwas Passenderes zu ersetzen (Aufzählungen waren bis zu diesem Zeitpunkt oft eine gute Wahl.)
Probleme treten auf, wenn ich String-Interpolation benötige, beispielsweise wenn ich SQL-Anfragen mache. Nehmen wir an, wir haben eine Tabelle mit mehreren klar definierten Eintragstypen (ich darf die Datenbank natürlich nicht neu gestalten, auch wenn das in diesem leicht vereinfachten Beispiel eine gute Idee zu sein scheint), wobei sich Department = 1 immer auf die Buchhaltung und Department = 2 immer auf Verkäufe bezieht. Wir garantieren, dass sich das nie ändern wird.
Wenn Sie diesen Code gefunden haben (beachten Sie, dass es keine Kommentare dazu gibt, was 2 bedeutet):

Code: Select all

var sqlQuery = "SELECT Name, IdCard FROM Employee WHERE Department = 2";
Ich würde es gerne durch etwas wie
ersetzen

Code: Select all

enum Departments
{
Accounting = 1,
Sales = 2,
Security = 3
}
//...
var sqlQuery = $"SELECT Name, IdCard FROM Employee WHERE Department = {Departments.Sales}";
Das scannt richtig, aber Sie haben vielleicht schon bemerkt, dass die Abfrage jetzt „SELECT Name, IdCard FROM Employee WHERE Department = Sales“ lautet , was falsch ist. Die praktische Seite lässt sich leicht durch Schreiben beheben

Code: Select all

enum Departments
{
Accounting = 1,
Sales = 2,
Security = 3
}
//...
var sqlQuery = $"SELECT Name, IdCard FROM Employee WHERE Department = {(int)Departments.Sales}";
(oder Departments.Sales.ToString("D") ) Aber der springende Punkt ist, den Code leichter lesbar/wartbar zu machen, das ist nicht ideal.
Meine Frage lautet also:
Gibt es eine Möglichkeit, ein Standardformat für das Drucken der Aufzählung festzulegen (vorzugsweise auf einer einzelnen Aufzählungsbasis, aber ich bin zufrieden, wenn es aktiviert werden muss). Projektebene) D sein („als numerischer Wert“)? Oder ist das Beste, was ich tun kann, einige voneinander unabhängige int-Konstanten zu definieren und Schluss zu machen?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post