Ich habe diesen Code;Call Aktion von einer anderen Aktion
Button button = new Button();
MessageBox ms = new MessageBox(button);
Action<bool> action = ms.Show();
action += (b) =>
{
Console.WriteLine(b.ToString()); //this isnt working
Console.WriteLine("??");
};
Console.Read();
button.OnClick();
Console.ReadKey();
MessageBox-Klasse:
class MessageBox
{
Button _button;
public MessageBox(Button button) { _button = button; }//initialize button
public Action<bool> Show()
{
Action<bool> action = new Action<bool>(CallForTest);
_button.OnClick+=()=>{ action?.Invoke(true); };
return action;
}
//...working.*//
public void CallForTest(bool statu){}
}
Ich möchte eine Aktion zurückkehren und wenn die Taste gedrückt wird, rufen Sie die action.But dieses nicht funktioniert? Was ist das Problem? Aktion ist ein Delegat, also Delegat ist ein Referenztyp? (Compiler generierte Klasse) Was ist falsch in diesem Bild?
Ich denke, wenn "Show()" endet, wird "Aktion" von Gargabe Sammler gesammelt. Aber das funktioniert mit anderen Referenztypen? beispielsweise;
public Test Show()
{
Test test = new Test("??");
button.OnClick +=() =>
{
test.JustForTest(); //working (cw("?????" + ctorvalue);
};
return test;
}
Das ist gut. Weiter codieren. – ViVi