| Autor |
Beitrag |
Regan
      
Beiträge: 2157
Erhaltene Danke: 72
Java (Eclipse), Python (Sublimetext 3)
|
Verfasst: 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.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Mi 27.08.08 19:25
Meinst Du sowas?
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 
      
Beiträge: 2157
Erhaltene Danke: 72
Java (Eclipse), Python (Sublimetext 3)
|
Verfasst: 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.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: 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
      
Beiträge: 3803
Erhaltene Danke: 176
Arch Linux
Python, C, C++ (vim)
|
Verfasst: Mi 27.08.08 19:54
Regan 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 
      
Beiträge: 2157
Erhaltene Danke: 72
Java (Eclipse), Python (Sublimetext 3)
|
Verfasst: Mi 27.08.08 20:07
Kha hat folgendes geschrieben: | Regan 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  .
Kha 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.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Mi 27.08.08 20:13
Regan hat folgendes geschrieben: | Kha hat folgendes geschrieben: | Regan 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 . |
Nüsch?
Das hier geht. Zwar in Oxygene geschrieben, das ist ja aber wurscht:
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
      
Beiträge: 100
Win XP | Debian | Ubuntu
C# | PHP | VB.NET
|
Verfasst: 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:
C#-Quelltext 1:
| readonly string[] arrStr = new String[] { "String1", "String2" }; |
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.
C#-Quelltext 1:
| static readonly string[] arrStr = new String[] { "String1", "String2" }; |
_________________ ~ Wer Rechtschreibfehler findet darf sie behalten ~
|
|
Regan 
      
Beiträge: 2157
Erhaltene Danke: 72
Java (Eclipse), Python (Sublimetext 3)
|
Verfasst: Do 28.08.08 17:01
Vielen Dank. Jetzt geht es. Das static hat gefehlt, das mir Kha 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.
|
|