myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » Grundlagen von C# » Wie kann ich die verschachtelte Übergabe von unterschiedlichen Parametern vereinfachen?
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

Wie kann ich die verschachtelte Übergabe von unterschiedlichen Parametern vereinfachen?

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
derrobin
myCSharp.de-Mitglied

Dabei seit: 04.06.2020
Beiträge: 3


derrobin ist offline

Wie kann ich die verschachtelte Übergabe von unterschiedlichen Parametern vereinfachen?

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Ich habe Programmcode hier mal vereinfacht dargestellt und möchte das Ganze kürzen, weiß aber nicht wie (die typen der eingangsparameter sind eig. kein string und int sondern teilweise listen enumerables etc.):

main(){
funktion1("hallo",5);
funktion2(....irgendwelche anderen parameter);
}

funktion1(string mystring, int myint){
HIER VIEL CODE
funktion3(mystring, myint)
HIER VIEL CODE
}

funktion2(....irgendwelche anderen parameter){
HIER VIEL CODE
funktion4(....irgendwelche anderen parameter)
HIER VIEL CODE
}

Also man kann hoff. erkennen. das die Eingangsparameter 2mal übergeben werden, einmal an z.B. Funktion1 und die widerum an funktion3. Die Codeblöcke sind bis auf die Parametertypen identisch. Ich könnte die Typen eventuell als Objekte kapseln oder was würdet ihr tun?
18.06.2020 14:00 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
witte
myCSharp.de-Mitglied

Dabei seit: 03.09.2010
Beiträge: 920


witte ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Das ist schwierig zu sagen, da man zu wenig von der Aufgabenstellung weiß. Man könnte sicherlich mit Objekten bauen falls du die Parameter kapseln willst. Wenn verschiedene Typen denselben Code durchlaufen sollen könnte man generisch arbeiten. Man könnte die Algorithmen auch als Methodenargumente übergeben, vllt erklärst du mal genauer was du vor hast.
18.06.2020 15:34 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Abt
myCSharp.de-Team

avatar-4119.png


Dabei seit: 20.07.2008
Beiträge: 14.280
Herkunft: Stuttgart/Stockholm


Abt ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

1) In C# sind das Methoden und keine Funktionen.
2) Ich sehe kein Problem einen Parameter mehrfach zu übergeben, wenn er für die entsprechende Aufgabe verwendet wird.

Ich bin mir auch nicht sicher, worauf Du hinaus willst: Du musst halt Inhalte übergeben.
18.06.2020 15:53 Beiträge des Benutzers | zu Buddylist hinzufügen
Andreas Adler Andreas Adler ist männlich
myCSharp.de-Mitglied

Dabei seit: 18.12.2012
Beiträge: 29


Andreas Adler ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Ich bin mir nicht ganz sicher, ob ich richtig verstanden habe, was dein Problem ist.

Hab ich das folgendermaßen richtig verstanden?:
  • Methode1: Enthält Code-Block "A", dann einen Aufruf auf Methode3 und dann Code-Block "B"
  • Methode2: Enthält Code-Block "A", dann einen Aufruf auf Methode4 und dann Code-Block "B"
  • Methode3: Enthält spezifischen Code für die identischen Parameter, wie sie Methode1 erhält
  • Methode4: Enthält spezifischen Code für die identischen Parameter, wie sie Methode2 erhält
Verstehe ich das richtig, dass Code-Block "A" bzw. "B" in den Methoden 1 und 2 identisch vorhanden ist, allerdings eben dupliziert, was du vermeiden willst?
Wenn dem so ist, und die beiden Code-Blöcke machen nichts mit deinen Übergabeparametern, dann solltest du die beiden Code-Blöcke in zwei weitere Methoden auslagern und diese entsprechend in den Methoden 1 und 2 aufrufen. Etwa folgendermaßen:
  • Methode 1: Aufruf auf MethodeA, dann einen Aufruf auf Methode3 und dann Aufruf auf MethodeB
  • Methode 2: Aufruf auf MethodeA, dann einen Aufruf auf Methode4 und dann Aufruf auf MethodeB
Sollten die beiden Code-Blöcke allerdings mit den Eingabeparametern arbeiten und diese (geringfügig) anders auswerten, solltest du über jeweils eine einzelne  generische Implementierung für deine beiden Methoden Methode1 und Methode2 bzw. Methode3 und Methode4 nachdenken.
18.06.2020 16:20 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
inflames2k inflames2k ist männlich
myCSharp.de-Poweruser/ Experte

avatar-3407.gif


Dabei seit: 03.01.2010
Beiträge: 2.242
Entwicklungsumgebung: Visual Studio 2010 Express


inflames2k ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Zitat von Andreas Adler:
Verstehe ich das richtig, dass Code-Block "A" bzw. "B" in den Methoden 1 und 2 identisch vorhanden ist, allerdings eben dupliziert, was du vermeiden willst?

Ein bisschen viel Spekulation. Das entnehme ich dem Eingangsbeitrag so nicht.

@derrobin
Wie Abt schon geschrieben hat, kannst du die gleichen Parameter auch noch an 100 weitere Methoden übergeben, wenn diese darin benötigt / ver- / bearbeitet werden.

Erkläre doch mal genauer was du vor hast und warum du denkst die Parameterübergabe irgendwie einkürzen zu müssen.
18.06.2020 17:03 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Andreas Adler Andreas Adler ist männlich
myCSharp.de-Mitglied

Dabei seit: 18.12.2012
Beiträge: 29


Andreas Adler ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Zitat von inflames2k:
Zitat von Andreas Adler:
Verstehe ich das richtig, dass Code-Block "A" bzw. "B" in den Methoden 1 und 2 identisch vorhanden ist, allerdings eben dupliziert, was du vermeiden willst?

Ein bisschen viel Spekulation. Das entnehme ich dem Eingangsbeitrag so nicht.

Das habe ich aus folgender Aussage geschlossen:

Zitat von derrobin:
Die Codeblöcke sind bis auf die Parametertypen identisch.

Da ja hier die Parametertypen angesprochen werden, und die sich nur zwischen den Methoden 1 und 2 bzw. 3 und 4 unterscheiden, habe ich das entsprechend so geschlussfolgert.

Aber ja, es ist Spekulation. Der Eingangsbeitrag ist recht diffus.
19.06.2020 11:59 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als 4 Monate.
Der letzte Beitrag ist älter als 4 Monate.
Antwort erstellen


© Copyright 2003-2020 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 20.10.2020 08:05