关于java:参数中的类函数

Class Function within Parameter

本问题已经有最佳答案,请猛点这里访问。

我可能在这里有一个脑残,我可能在这里,但是有点难说出我的问题,所以我有一些问题要寻求帮助。

本质上,在Java中,你可以这样做:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// 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表达式来完成,但是我不能,因为我的生活似乎能理解它。感谢您的帮助。


我不能百分之百地肯定这是你想要实现的,但你可以这样做。用Action委托替换属性:

1
2
3
4
public class Test
{
    public Action random { get; set; }
}

像这样使用:

1
2
3
4
5
6
var test = new Test
{
    random = () => Console.WriteLine("Howdy")
};

test.random();

在这种情况下,委托用于不带参数且没有返回的方法。如果需要参数,可以使用Action的通用版本。例如,如果需要传递int

1
public Action<int> random { get; set; }

或者如果您想要返回一个值,那么您必须使用Func<>

1
public Func<int> random { get; set; }