我可能在这里有一个脑筋,我可能是,但是我很难说出我的问题,所以我有一些问题需要帮助。
基本上,在Java中,你可以这样做:
// create some generic class
public class Test {
public void random() {}
}
// other class
public class Test2 {
public Test2() {
someFunction(new Test() {
public void random() {
System.out.println("howdy");
}
});
}
private someFunction(Test t) {
t.random();
}
}
我希望转换这个想法(将类的内容修改为将其作为变量传递)到C#中。我理解它可以用 lambda表达式来完成,但我不能为我的生活似乎弄清楚它。任何帮助表示赞赏。
答案 0 :(得分:1)
我不是100%确定这是你想要实现的目标,但你可以这样做。将该属性替换为Action
delegate:
public class Test
{
public Action random { get; set; }
}
并像这样使用:
var test = new Test
{
random = () => Console.WriteLine("Howdy")
};
test.random();
在这种情况下,委托是针对不带参数且没有返回的方法。如果您需要参数,可以使用Action
的通用版本。例如,如果您需要传递int
:
public Action<int> random { get; set; }
或者如果您想返回一个值,则必须使用Func<>
:
public Func<int> random { get; set; }