Autor Beitrag
Regan
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 2157
Erhaltene Danke: 72


Java (Eclipse), Python (Sublimetext 3)
BeitragVerfasst: Mi 27.08.08 19:16 
Moin,
ich habe seit kurzem die Sprache gewechselt und schreibe jetzt nur noch in C#. Als ich meinen alten Quellcode übertragen wollte, bin ich auf folgendes Problem gestoßen:
Ich habe verschiedene Strings ("en", "de" etc.) und möchte diese als Konstantenarray festlegen. Wie mache ich das? Ich wollte schon ein Array verweden. Da habe ich aber festgestellt, dass man das ja initialisieren muss.
Danke schonmal für eine Antwort.

MfG
Regan
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Mi 27.08.08 19:25 
Meinst Du sowas?
ausblenden C#-Quelltext
1:
readonly string[] constants = new String[] { "foo""bar" };					

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Regan Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 2157
Erhaltene Danke: 72


Java (Eclipse), Python (Sublimetext 3)
BeitragVerfasst: Mi 27.08.08 19:31 
Naja, eigentlich ja, aber ich weiß nicht, wie ich da IndexOf überprüfen kann, also ob ein Element vorhanden ist.
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Mi 27.08.08 19:34 
Irgendwie verstehe ich nicht so ganz, was Du meinst. ;-)

Kannst Du vielleicht kurz ein Delphi-Beispiel posten, welches Du portieren willst?

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Mi 27.08.08 19:54 
user profile iconRegan hat folgendes geschrieben:
Naja, eigentlich ja, aber ich weiß nicht, wie ich da IndexOf überprüfen kann, also ob ein Element vorhanden ist.
Hilft dir Array.IndexOf ;) ?
@Christian: Ich denke, es geht um eine "de" -> 0, "en" -> 1, ...-Zuordnung.

Edit: Der große Unterschied zu Delphi ist, dass du das Array außerhalb der Methode deklarieren solltest (am besten als static readonly), sonst wird es bei jedem Aufruf erstellt.

_________________
>λ=
Regan Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 2157
Erhaltene Danke: 72


Java (Eclipse), Python (Sublimetext 3)
BeitragVerfasst: Mi 27.08.08 20:07 
user profile iconKha hat folgendes geschrieben:
user profile iconRegan hat folgendes geschrieben:
Naja, eigentlich ja, aber ich weiß nicht, wie ich da IndexOf überprüfen kann, also ob ein Element vorhanden ist.
Hilft dir Array.IndexOf ;) ?

Bei der String-Variante von Christian geht das aber nicht :wink: .
user profile iconKha hat folgendes geschrieben:
Edit: Der große Unterschied zu Delphi ist, dass du das Array außerhalb der Methode deklarieren solltest (am besten als static readonly), sonst wird es bei jedem Aufruf erstellt.

Aha. Ich versuche nochmal mein problem deutlich zu machen: Ich habe bestimmte Strings ("de, "en") und habe einen weiteren String, der als Eingabe existiert. Nun möchte ich prüfen, ob der Eingabestring zu einem der bestimmten Strings passt/übereinstimmt.
Deshalb wollte ich diese String in ein Array/List<string>/StringCollection/string[] konstant deklarieren.
In Delphi hab ich mir da immer ein Array gemacht und bin jedes Element durchgegangen mit einer for to Schleife. Da aber C# bei anderen Klassen die IndexOf-Methode bereitstellt, dachte ich, dass ich die nehmen kann, um den Aufurf zu verkürzen.
Ich hoffe ich habe es deutlich erklärt. Sonst erstell ich gern noch ein Delphibeispielprojekt.
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Mi 27.08.08 20:13 
user profile iconRegan hat folgendes geschrieben:
user profile iconKha hat folgendes geschrieben:
user profile iconRegan hat folgendes geschrieben:
Naja, eigentlich ja, aber ich weiß nicht, wie ich da IndexOf überprüfen kann, also ob ein Element vorhanden ist.
Hilft dir Array.IndexOf ;) ?

Bei der String-Variante von Christian geht das aber nicht :wink: .

Nüsch? :gruebel:
Das hier geht. Zwar in Oxygene geschrieben, das ist ja aber wurscht:
ausblenden Delphi-Prism-Quelltext
1:
2:
  var arr : Array of String := Array of String(['foo''bar']);
  Console.WriteLine( &Array.IndexOf(arr, 'bar') );


Ansonsten hab ich jetzt, glaube ich, verstanden, was Du machen willst. Sollte Array.IndexOf wirklich nicht gehen, könntest Du Dir noch eine eigene Extension Method schreiben.

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Skiller-1988
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 100

Win XP | Debian | Ubuntu
C# | PHP | VB.NET
BeitragVerfasst: Do 28.08.08 08:13 
Hi,
also ich habe das ganze mal kurz in C# ausprobiert und die Variante von Christian S. hat bei mir funktioniert.

mein Versuch:
ausblenden C#-Quelltext
1:
readonly string[] arrStr = new String[] { "String1""String2" };					

ausblenden C#-Quelltext
1:
label1.Text = Convert.ToString(Array.IndexOf(arrStr, "String1"));					


Das Label gibt dann entweder 0 oder 1 zurück in dem Fall wie oben dargestellt 0.

mit static funktionierte es übrigens ebenfalls.
ausblenden C#-Quelltext
1:
static readonly string[] arrStr = new String[] { "String1""String2" };					

_________________
~ Wer Rechtschreibfehler findet darf sie behalten ~
Regan Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 2157
Erhaltene Danke: 72


Java (Eclipse), Python (Sublimetext 3)
BeitragVerfasst: Do 28.08.08 17:01 
Vielen Dank. Jetzt geht es. Das static hat gefehlt, das mir user profile iconKha schon vorgeschlagen hatte. Ich habe auch vergessen zu sagen, dass das Array in eine statische Klasse kommen soll. Deshalb kam bei mir immer der Fehler, dass das nicht initialisiert werden kann.