Entwickler-Ecke
C# - Die Sprache - Delegate Konstrukt
CSMN - So 08.08.10 15:01
Titel: Delegate Konstrukt
hallo,
mir ist schon klar, was ein delegate ist und das dieses immer die selbe signatur wie die zugehörige methode haben muss, etc. aber ich habe hier ein Konstrukt gefunden das mir ein wenig rätselhaft erscheint:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| public delegate S_outfun FunctionPointer(double[] paras, S_Infun S_in); public static FunctionPointer obj_function; public FileWrite fwrite1;
public DE(FunctionPointer obj_function_, string fileLoc) { obj_function = obj_function_; fwrite1 = new FileWrite(fileLoc); } |
was ist mir daran nicht klar? - ich weiß nicht wie ich die klasse DE instanziieren kann und gleichzeitig die vom delegate geforderten parameter übergebe. wobei S_Infun ein struct ist das ich vorher erstelle. Jedoch muss ich beim delegate irgendwo einen fehler machen weil ich bezüglich der obj_function einen nullreferenzfehler erhalte. ich hoffe mir kann jemand meinen fehler erklären!?
vielen dank im vorraus
csmn
Christian S. - So 08.08.10 15:11
Die Parameter übergibst Du an der Stelle doch gar nicht, sondern nur den Delegaten. Die Parameter werden ja erst beim Aufruf des Delegaten übergeben, der geschieht ja aber irgendwann an anderer Stelle.
CSMN - So 08.08.10 15:16
hi christian,
ich muss den konstruktor aber den Parameter "FunctionPointer obj_function_" übergeben, was mir irgendwie rätselhaft ist!?
Moderiert von
Christian S.: Beiträge zusammengefasst, Klasse angehangen
hier (cs, 26.75 KB) die ganze klasse
Christian S. - So 08.08.10 15:23
Ja, da übergibst Du halt eine entsprechende Methode. Also z.B.
C#-Quelltext
1: 2: 3: 4: 5: 6: 7:
| public S_outfun Blubb(double[] paras, S_Infun S_in) { }
var someDE = new DE(Blubb, "..."); |
Was soll ich mit 700 Zeilen Klasse anfangen? :gruebel:
P.S.: Dieses ganze Unterstrichzeug ist ja grausam zu lesen ... :?
CSMN - So 08.08.10 15:23
die klasse soll dazu dienen die differentielle evolution auszuführen. mir ist halt nicht ganz klar wie ich die datenreihe die verwendet werden soll übergeben kann und wohin der parameter "FunctionPointer obj_function_" führt?
CSMN - So 08.08.10 15:28
Christian S. hat folgendes geschrieben : |
Ja, da übergibst Du halt eine entsprechende Methode. Also z.B.
C#-Quelltext 1: 2: 3: 4: 5: 6: 7:
| public S_outfun Blubb(double[] paras, S_Infun S_in) { }
var someDE = new DE(Blubb, "..."); |
P.S.: Dieses ganze Unterstrichzeug ist ja grausam zu lesen ... :? |
das heißt ich kann quasi jede funktion übergeben?
sorry, ich hab das nicht geschrieben! das ist opensource-unterstichzeugs...
Christian S. - So 08.08.10 15:29
Ja, Du kannst halt jede Methode übergeben, welche die korrekte Signatur hat. Wozu die Methode dann benutzt wird, das kann ich Dir auch nicht sagen, da musst Du mal den Quellcode der Klasse nachvollziehen.
CSMN - So 08.08.10 15:31
Christian S. hat folgendes geschrieben : |
Ja, Du kannst halt jede Methode übergeben, welche die korrekte Signatur hat. Wozu die Methode dann benutzt wird, das kann ich Dir auch nicht sagen, da musst Du mal den Quellcode der Klasse nachvollziehen. |
ahhh ok, ich glaub nun hab ichs verstanden!
besten dank!
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!