Laden...

Methodenaufruf aus statischer Methode ohne neue Instanz

Erstellt von Schaf vor 10 Jahren Letzter Beitrag vor 10 Jahren 4.153 Views
Thema geschlossen
S
Schaf Themenstarter:in
2 Beiträge seit 2014
vor 10 Jahren
Methodenaufruf aus statischer Methode ohne neue Instanz

Hallo alle miteinander 😃

ich versuche mich in Objektorientierung einzuarbeiten, habe allerdings noch ein paar Probleme damit.

Ich möchte in einer Klasse A aus einer statischen Methode ein Event feuern, welches eine Methode in Klasse B (eine Form) aufruft.

Ich habe schon viel rumprobiert, die häufigste Fehlermeldung endet auf "ist ein Objektverweis erforderlich" .

Wie komme ich aus der statischen Methode auf die anderen Methoden (auch auf die Methoden aus einer anderen Klasse) ohne eine neue Instanz erstellen zu müssen?

Das Event soll eine Methode aufrufen, die ein paar Daten holt, etwas aufbereitet und in ein Datagridview einfügt. Da kann ich keine neue Instanz erstellen, weil sonst nichts in der Form gezeigt wird bzw. ich habe ja nur diese offene Form.

ich hoffe ich habe das so formuliert, dass ihr mein Problem versteht.

Freue mich auf Antworten, bin echt am verzweifeln damit 😦

LG,

Alex

4.221 Beiträge seit 2005
vor 10 Jahren

Ein Event aus einer statischen Klasse muss natürlich ein Statischer Event sein... dann klappt es auch mit der Nachbarin 😃

Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...

4.939 Beiträge seit 2008
vor 10 Jahren

Hallo Alex,

gerade bei der objektorientierten Programmierung solltest du auf statische Klassen und Methoden eher verzichten (außer für Helper, Utilities, Singletons).
Lies dir auch mal [FAQ] Kommunikation von 2 Forms durch (diese Kommunikation gilt auch zwischen Form und Klasse).

S
Schaf Themenstarter:in
2 Beiträge seit 2014
vor 10 Jahren

Danke für eure Antworten.
Statische Elemente sind bisher das Einzige was bei mir bis jetzt funktioniert hat um zwischen den Klassen zu kommunizieren, nur leider stellt mir das manchmal ein Bein.
Wie kann ich denn generell ohne neue Instanz zwischen Klassen kommunizieren?
Ich versuche schon die ganze Zeit vernünftig zu kapseln, nur leider gelingt mir das eben deshalb nicht 😦

49.485 Beiträge seit 2005
vor 10 Jahren

Hallo Schaf,

statische Methoden sollte man weitgehend vermeiden. Das gilt bei statischen Events in noch stärkerem Maße. Daher verwende (wo immer möglich) Instanz-Events.

Wie man solche (Instanz-)Events korrekt definiert, steht in [FAQ] Eigenen Event definieren / Information zu Events (Ereignis/Ereignisse).

Zu der genannten Fehlermeldung findest du in [FAQ] Für das nicht statische Feld, die Methode oder die Eigenschaft "X" ist ein Objektverweis erf. alle nötigen Informationen.

Deine eigentlich Frage ist, sorry, schon fast Unsinn. Auf eine Instanz-Methode kann man nicht ohne eine Instanz zugreifen. Punkt!

Doch das Neuerstellen einer Instanz ist meistens auch keine Lösung, denn in der Regel will man die Methode eines bestimmten, vorhandenen Objekts aufrufen.

Alle Events und Methoden statische zu machen, damit man keine Instanzen braucht, ist genausowenig eine Lösung.

Die Lösung ist, mit den gewünschten und erforderlichen Instanzen zu arbeiten. Das ist eigentlich immer problemlos möglich.

Insgesamt sind das allerdings alles Grundlagen und dazu sind keine Fragen zulässig, siehe [Hinweis] Wie poste ich richtig? Punkt 1.1.1. Wie du trotzdem großen Nutzen aus dem Forum ziehen kannst, steht in [FAQ] Wie finde ich den Einstieg in C#?

Am besten du stellst die konkrete Aufgabe erstmal zurück und arbeitest (weiter) ein gutes C# Buch durch und ggf. noch eins zur Objektorientierung. Anschließend lösen sich solche und ähnliche Probleme meistens in Luft auf.

herbivore

Thema geschlossen