Entwickler-Ecke
Basistechnologien - Globale Konstanten
Konrad - Do 16.06.11 09:05
Titel: Globale Konstanten
Hallo,
ich habe viele Strings (z.B. Spaltennamen von SQL-Tabellen, oder Key-Bezeichnungen) die ich gerne als Konstanten definieren würde.
Was ist der dafür beste Weg? Definiere ich mir diese in einer extra Datei alle als String-Konstanten und binde diese Datei überall ein? (So habe ich es bisher in Python gemacht).
Oder nutze ich dafür die Ressources? Ist so ein Aufruf einer Ressourcen-Tabelle für eine Konstante nicht wahnsinnig unperformant?
Habt vielen Dank
Konrad
Oliver M. - Do 16.06.11 15:06
Hallo,
ich verstehe nicht gans was du machen willst, aber wenn ich dich richtig verstanden habe, könnten dir diese Zeilen weiterhelfen:
C#-Quelltext
1:
| readonly string[] konstant = new string[] {"String 1", "String 2" , "..."}; |
oder
C#-Quelltext
1: 2: 3:
| readonly string string1 = "String 1"; readonly string string2 = "String 2"; ... |
(
readonly besagt dass der String nur gelesen werden kann)
MfG Oliver
Konrad - Do 16.06.11 16:00
Naja ich suchte eher nach einem Konzept, WO man Konstanten am besten definiert ... in einer statischen Klasse, die alle einbinden, in einen Ressourccen-Datei oder in einer dritten Möglichkeit die ich noch nicht auf dem Schirm habe.
BTW: Was ist denn der Unterschied zwischen readonly und const?
Christian S. - Do 16.06.11 16:00
In den Resourcen würde ich das nicht machen, sondern in den Settings (findest Du im Solutionexplorer genau wie die Resourcen) und dort als Anwendungs-Setting (das stellt man unter "Bereich").
Über die Performance kann ich nicht viel sagen, weil ich nicht weiß, wie die Datenhaltung intern organsisiert ist.
Th69 - Do 16.06.11 16:19
Hallo zusammen,
Konstanten würde ich direkt im Code platzieren (wenn sie von mehreren Klassen benötigt würden, dann in eine statische Klasse).
In den Application-Settings nur, wenn sie auch "von außen" geändert werden sollen (z.B. Name einer Datenbank-Tabelle oder frei definierbare Spalten).
Der Unterschied zwischen 'const' und 'readonly' ist:
- const kann nur für eingebaute Datentypen verwendet werden (int, bool, string, ...)
- readonly bedeutet, daß dieser Wert auch dynamisch noch im Konstruktor geändert werden kann (danach dann aber konstant ist)
Ich selber benutze 'readonly' häufig in Verbindung mit 'static', d.h. daß es unabhängig von einer einzelnen Instanz ist, z.B. um einen Wert aus den Application-Settings einmalig zu lesen:
C#-Quelltext
1: 2: 3: 4:
| static class Constants { public static readonly string TableName = Properties.Settings.Default.TableName; } |
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!