Benutzer mit den meisten Antworten
Ändern der Werte einer Klasse

Frage
-
Liebe Community,
ich habe folgende Frage: Wie kann ich Wertzuweisungen einer bestimmten Klasse ändern?
Meine Klasse:
public class Fahrzeug { public int id { get; set; } public string name { get; set; } public string f_trenn { get; set; } public object f_wache { get; set; } public object f_kennung { get; set; } public object f_nummer { get; set; } public object f_status { get; set; } public object f_dienstzeit_anfang { get; set; } public object f_dienstzeit_ende { get; set; } }
Der Parameter "id" ist eindeutig und kommt nur einmal vor.
Wie kann ich mithilfe des Parameters "id" nun Änderungen an dem jeweiligen Fahrzeug vornehmen? Beispielsweise, wenn ich f_status ändern möchte?
Danke für eure Hilfe!
Antworten
-
Hallo,
um die Werte von Eigenschaften ändern zu müssen, musst du immer deren Instanz haben. Wenn du beispielsweise eine Liste von Fahrzeug hast, dann kannst du diese durchlaufen und die passende Instanz heraus suchen:
Fahrzeuge f=null; foreach(var fahrzeug in Fahrzeuge){ if(fahrzeug.id==gesuchteId){ f=fahrzeug; } }
Oder aber etwas fortgeschrittener mit LinQ:var f = fahrzeuge.FirstOrDefault(x=>x.id==gesuchtId);
f ist in beiden Fällen null, wenn das Auto nicht gefunden wurde, darauf solltest du zusätzlich prüfen. Ansonsten kannst du nun einfach die Eigenschaften zuweisen:f.f_status="was neues";
PS: Unabhängig von deiner Frage solltest du dich mit den Konventionen der Sprache (keine Präfixe für Eigenschaften, CamelCase) näher auseinander setzen. Außerdem ist die Verwendung von object als Typ von fast allen Eigenschaften nicht gerade schön. DateTime, int und string sind hier ohne neue Typen erstellen zu müssen meist deutlich besser geeignet.
Tom Lambert - .NET (C#) MVP
Wozu Antworten markieren und für Beiträge abstimmen? Klicke hier.
Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter | Account bestätigen (Verify Your Account)
Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets- Als Antwort markiert Nevco Sonntag, 24. Januar 2016 20:48
-
Hallo,
mache für eine neue Frage bitte einen neuen Thread auf, sonst wird das erfahrungsgemäß schnell sehr unübersichtlich.
Nur kurz so viel: Die Klasse selbst ist überall verfügbar, da sie public ist. Duz wirst wohl eher die Liste teilen wollen. Diese musst du entweder immer an jede neue Form weiter reichen oder aber auf eine statische Liste setzen.
Tom Lambert - .NET (C#) MVP
Wozu Antworten markieren und für Beiträge abstimmen? Klicke hier.
Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter | Account bestätigen (Verify Your Account)
Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets- Als Antwort markiert Nevco Sonntag, 24. Januar 2016 21:45
Alle Antworten
-
Hallo,
um die Werte von Eigenschaften ändern zu müssen, musst du immer deren Instanz haben. Wenn du beispielsweise eine Liste von Fahrzeug hast, dann kannst du diese durchlaufen und die passende Instanz heraus suchen:
Fahrzeuge f=null; foreach(var fahrzeug in Fahrzeuge){ if(fahrzeug.id==gesuchteId){ f=fahrzeug; } }
Oder aber etwas fortgeschrittener mit LinQ:var f = fahrzeuge.FirstOrDefault(x=>x.id==gesuchtId);
f ist in beiden Fällen null, wenn das Auto nicht gefunden wurde, darauf solltest du zusätzlich prüfen. Ansonsten kannst du nun einfach die Eigenschaften zuweisen:f.f_status="was neues";
PS: Unabhängig von deiner Frage solltest du dich mit den Konventionen der Sprache (keine Präfixe für Eigenschaften, CamelCase) näher auseinander setzen. Außerdem ist die Verwendung von object als Typ von fast allen Eigenschaften nicht gerade schön. DateTime, int und string sind hier ohne neue Typen erstellen zu müssen meist deutlich besser geeignet.
Tom Lambert - .NET (C#) MVP
Wozu Antworten markieren und für Beiträge abstimmen? Klicke hier.
Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter | Account bestätigen (Verify Your Account)
Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets- Als Antwort markiert Nevco Sonntag, 24. Januar 2016 20:48
-
Hallo Tom,
danke für deine hilfreiche Antwort. Meine Frage hat sich somit erledigt.
Nun eine weitere Frage:
Wie kann ich diese Fahrzeug-Klasse für das ganze Projekt nutzbar machen? Sodass ich also auf die Werte der Klasse "Fahrzeuge" von allen Forms aus zugreifen kann. Gibts da eine Möglichkeit?Danke!
-
Hallo,
mache für eine neue Frage bitte einen neuen Thread auf, sonst wird das erfahrungsgemäß schnell sehr unübersichtlich.
Nur kurz so viel: Die Klasse selbst ist überall verfügbar, da sie public ist. Duz wirst wohl eher die Liste teilen wollen. Diese musst du entweder immer an jede neue Form weiter reichen oder aber auf eine statische Liste setzen.
Tom Lambert - .NET (C#) MVP
Wozu Antworten markieren und für Beiträge abstimmen? Klicke hier.
Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter | Account bestätigen (Verify Your Account)
Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets- Als Antwort markiert Nevco Sonntag, 24. Januar 2016 21:45