Entwickler-Ecke
Basistechnologien - List als globale Variable definieren ?
master147 - Sa 05.05.12 13:30
Titel: List als globale Variable definieren ?
Hallo,
ich habe ein Programm zur Feiertagsberechnung geschrieben. Das Problem ist bloß das ich in eine Textbox ein Datum eingeben will und meine 2 List's in der Klasse durchsucht werden sollen und bei einem Fund das Ergebnis ausgegeben werden soll. Nun habe ich aber das Problem das meine List's nur in den entsprechenden 2 Methoden verfügbar ist.
Hier ist der Code:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34:
| public static List<string> FesteFeiertage(int jahr) { List<string> Fest = new List<string>(); Fest.Add("Neujahr " + "(01.01." + jahr + ")"); Fest.Add("Tag der Arbeit " + "(01.05." + jahr + ")"); Fest.Add("Tag der Deutschen Einheit " + "(03.10." + jahr + ")"); Fest.Add("Reformationstag " + "(31.10." + jahr + ")"); Fest.Add("1. Weihnachtsfeiertag " + "(25.12." + jahr + ")"); Fest.Add("2. Weihnachtsfeiertag " + "(26.10." + jahr + ")");
return Fest; }
public static List<string> BeweglicheFeiertage(int jahr) { DateTime Ostersonntag = GetOstersonntag(jahr);
List<string> Beweg = new List<string>();
Beweg.Add("Karfreitag " + "(" + Ostersonntag.AddDays(-2).ToShortDateString() + ")"); Beweg.Add("Ostersonntag " + "(" + Ostersonntag.ToShortDateString() + ")"); Beweg.Add("Ostermontag " + "(" + Ostersonntag.AddDays(+1).ToShortDateString() + ")"); Beweg.Add("Christi Himmelfahrt " + "(" + Ostersonntag.AddDays(+39).ToShortDateString() + ")"); Beweg.Add("Pfingstmontag " + "(" + Ostersonntag.AddDays(+50).ToShortDateString() + ")");
return Beweg; } |
Kann man die List Beweg und Fest als globale Variable definieren, damit ich auch in der Suchmethode darauf zugreifen kann ?
Moderiert von
Th69: Quote- durch C#-Tags ersetztModeriert von
Th69: Topic aus WinForms verschoben am Sa 05.05.2012 um 13:45
daeve - Sa 05.05.12 21:15
ja wiso nicht ? wenn du diese Funktion benötigst.
master147 - Sa 05.05.12 22:15
Aber wie definiere ich die List den global ?
Bei mir funktioniert das irgend wie nicht. Es wäre nett wenn ihr mir mal ein Beispiel zeigen könntet wie man eine List global definiert.
daeve - Sa 05.05.12 23:24
du musst deine Liste einfach aus der Methode nehmen und direkt in die Klasse schreiben
master147 - So 06.05.12 10:19
Wenn ich das mache sieht das in meiner Klasse so aus:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| using System; using System.Collections.Generic; using System.Linq; using System.Text;
namespace Feiertagsberechnung { class Feiertag { List<string> Fest = new List<string>();
public static DateTime GetOstersonntag(int jahr) { ..... } |
Das Problem ist wenn ich in meiner Suchmethode den Klassennamen schreibe und danach den Punkt setze kommt nicht die Liste Fest.
Was mache ich das falsch ?
So sieht meine Suchmethode bis jetzt aus:
C#-Quelltext
1: 2: 3: 4:
| public static List<string> Suche (int jahr) { Feiertag. } |
Th69 - So 06.05.12 10:49
Hallo,
die MemberVariable muß dann natürlich auch
static sein.
Ich empfehle jedoch, daß du diese Variable wieder lokal machst, denn deine Methoden erzeugen ja diese Liste und geben sie als Rückgabewert zurück.
Die aufrufende Klasse (bzw. Instanz) kann sich diese natürlich in einer (Member-)Variablen merken:
C#-Quelltext
1: 2: 3: 4:
| List<string> festeFeiertage, beweglicheFeiertage; festeFeiertage = Feiertag.FesteFeiertage(jahr); beweglicheFeiertage = Feiertag.beweglicheFeiertage(jahr); |
Als nächsten Schritt solltest du aber anstatt
string eine eigene Datenstruktur (-klasse) verwenden, so daß du Name und Datum getrennt hältst (damit du mit den Datumswerten auch Vergleiche oder Berechnungen anstellen kannst), sonst wird deine Suchmethode unnötig kompliziert.
Oliver M. - So 06.05.12 10:50
Du musst
C#-Quelltext
1:
| public List<string> Fest = new List<string>(); |
oder
C#-Quelltext
1:
| internal List<string> Fest = new List<string>(); |
schreiben.
Tipp: Wenn du Anfänger in C# bist, empfele ich dir das Buch „Visual C# 2008“ (bzw. das für deine Visual Studios Version) von Dirk Louis. Ich habe es selbst und bin sehr zufrieden damit (-:
master147 - Sa 19.05.12 21:38
Danke das hat funktioniert
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!