Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 参数内的类函数_Java_C# - Fatal编程技术网

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