Wie erfasse ich eine Variable?
Kann ich alternativ eine Referenz auf eine Objektreferenz speichern?Wie erfasse ich eine Variable (C#)
Normalerweise kann eine Methode eine Variable außerhalb davon mit dem Schlüsselwort ref
ändern.
void Foo(ref int x)
{
x = 5;
}
void Bar()
{
int m = 0;
Foo(ref m);
}
Dies ist klar und unkompliziert.
Lassen Sie uns jetzt eine Klasse betrachten, das Gleiche zu erreichen:
class Job
{
// ref int _VarOutsideOfClass; // ?????
public void Execute()
{
// _VarOutsideOfClass = 5; // ?????
}
}
void Bar()
{
int m = 0;
var job = new Job()
{
_VarOutsideOfClass = ref m // How ?
};
job.Execute();
}
Wie schreibe ich es richtig?
Kommentare: Ich kann es nicht eine Methode mit einem ref
Argumente machen, weil Execute()
typischerweise etwas später in einem anderen Thread aufgerufen wird, wenn es in der Warteschlange kommt.
Derzeit habe ich einen Prototyp mit vielen lambda:
class Job
{
public Func<int> InParameter;
public Action<int> OnResult;
public void Execute()
{
int x = InParameter();
OnResult(5);
}
}
void Bar()
{
int m = 0;
var job = new Job()
{
InParameter =() => m,
OnResult = (res) => m = res
};
job.Execute();
}
... aber vielleicht gibt es eine bessere Idee.
Ihre Lösung scheint mir ziemlich gut ... –