Autor |
Beitrag |
CSMN
      
Beiträge: 43
Erhaltene Danke: 2
|
Verfasst: So 08.08.10 15:01
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.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: 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.
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
CSMN 
      
Beiträge: 43
Erhaltene Danke: 2
|
Verfasst: 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
Einloggen, um Attachments anzusehen!
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: 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?
P.S.: Dieses ganze Unterstrichzeug ist ja grausam zu lesen ... 
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
CSMN 
      
Beiträge: 43
Erhaltene Danke: 2
|
Verfasst: 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 
      
Beiträge: 43
Erhaltene Danke: 2
|
Verfasst: So 08.08.10 15:28
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: 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.
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Für diesen Beitrag haben gedankt: CSMN
|
|
CSMN 
      
Beiträge: 43
Erhaltene Danke: 2
|
Verfasst: 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!
|
|