Autor Beitrag
Konrad
Hält's aus hier
Beiträge: 12



BeitragVerfasst: Do 16.06.11 09:05 
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.
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 109
Erhaltene Danke: 1

Win 8 CP
VS 11 Beta
BeitragVerfasst: 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:
ausblenden C#-Quelltext
1:
readonly string[] konstant = new string[] {"String 1""String 2" , "..."};					

oder
ausblenden 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 Threadstarter
Hält's aus hier
Beiträge: 12



BeitragVerfasst: 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.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: 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.

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4798
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: 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:
ausblenden C#-Quelltext
1:
2:
3:
4:
static class Constants
{
  public static readonly string TableName = Properties.Settings.Default.TableName;
}