Java 参数内的类函数
我可能在这里发了个屁,我可能是,但是我的问题有点难以表达,所以我在寻求帮助时遇到了一些问题Java 参数内的类函数,java,c#,Java,C#,我可能在这里发了个屁,我可能是,但是我的问题有点难以表达,所以我在寻求帮助时遇到了一些问题 本质上,在Java中,您可以执行以下操作: // create some generic class public class Test { public void random() {} } // other class public class Test2 { public Test2() { someFunction(new Test() { publi
本质上,在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();
}
}
var test = new Test
{
random = () => Console.WriteLine("Howdy")
};
test.random();
我希望将这个想法(修改类的内容,同时将其作为变量传递)转换为C#。我知道这可以用lambda表达式来完成,但是我无法用我的生命来理解它。非常感谢您的帮助。我不能100%确定这是您想要实现的目标,但您可以这样做。将属性替换为: 然后像这样使用:
// 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();
}
}
var test = new Test
{
random = () => Console.WriteLine("Howdy")
};
test.random();
本例中的委托用于不接受参数且不返回的方法。如果需要参数,可以使用操作的通用版本。例如,如果需要传递一个int
:
public Action<int> random { get; set; }
public Action random{get;set;}
或者,如果要返回值,则必须使用Func
:
public Func random{get;set;}
在Java中不能这样做:对someFunction
的调用需要在一个方法中。尽管如此,您实际询问的是“某物”的哪一部分:测试类、Test2类、匿名类、random方法、someFunction方法……?能够在调用该方法时修改random()的内容。哪一个是“该方法”?您如何修改代码中的“contents of random()”?在类测试中,random函数什么都不做。当我将一个Test实例传递给someFunction()时,我编辑random()的内容。啊,太棒了。干杯,伙计。这就是你要找的吗?是的,它完成了任务。如果你必须传递一个变量,还必须返回一个变量呢?然后仍然使用Func
,但给它两个类型参数,例如:Func