参数中的类函数

时间:2015-10-26 00:12:05

标签: java c#

我可能在这里有一个脑筋,我可能是,但是我很难说出我的问题,所以我有一些问题需要帮助。

基本上,在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表达式来完成,但我不能为我的生活似乎弄清楚它。任何帮助表示赞赏。

1 个答案:

答案 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; }