Autor Beitrag
CSMN
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 43
Erhaltene Danke: 2



BeitragVerfasst: 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:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
// class members
public delegate S_outfun FunctionPointer(double[] paras, S_Infun S_in);
public static FunctionPointer obj_function;
public FileWrite fwrite1;

// constructor
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.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 43
Erhaltene Danke: 2



BeitragVerfasst: 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 user profile iconChristian S.: Beiträge zusammengefasst, Klasse angehangen

hier (cs, 26.75 KB) die ganze klasse
Einloggen, um Attachments anzusehen!
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: So 08.08.10 15:23 
Ja, da übergibst Du halt eine entsprechende Methode. Also z.B.

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
public S_outfun Blubb(double[] paras, S_Infun S_in)
{
    // ... mach was ...
}


var someDE = new DE(Blubb, "...");



Was soll ich mit 700 Zeilen Klasse anfangen? :gruebel:


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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 43
Erhaltene Danke: 2



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 43
Erhaltene Danke: 2



BeitragVerfasst: So 08.08.10 15:28 
user profile iconChristian S. hat folgendes geschrieben Zum zitierten Posting springen:
Ja, da übergibst Du halt eine entsprechende Methode. Also z.B.

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
public S_outfun Blubb(double[] paras, S_Infun S_in)
{
    // ... mach was ...
}


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.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 43
Erhaltene Danke: 2



BeitragVerfasst: So 08.08.10 15:31 
user profile iconChristian S. hat folgendes geschrieben Zum zitierten Posting springen:
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!