创建一个包含动作的变量

Create a variable that contains an action

我正在尝试做一个变量,当我调用它时,它会执行代码。

例如


string path1;
string path2;

bool check;

var make;// the variable in case

//other code

if(check == false)
{
 make = File.Copy(path1, path2); // the thing impossible to do
}
else
{
 make = File.Move(path1, path2);
}

make;//and here it should to run some code

这不是 运行 make 中包含的代码。

但是代码不能使用内部编译器,如 Roslyn,因为它太慢了。

我试过了,但没有用:

Action make = File.Copy(path1, path2);

不想使用函数作为:

public void main()
{
  make();
}


public void make()
{
 if(check == false)
 {
  make = File.Copy(path1, path2);
 }
 else
 {
  make = File.Move(path1, path2);
 }
}

这可以吗?感谢

我认为你可以通过使用委托来解决它,委托可以引用一个方法 这里有一个linkhttps://www.bing.com/videos/search?q=c%23+delegate&docid=608021580906889596&mid=8AA2F8B388EE3F6D24718AA2F8B388EE3F6D2471&view=detail&FORM=VIRE关于委托

的使用

我认为你需要的是利用委托的力量,你的目标可以简单地使用以下代码实现:

string path1;
string path2;

bool check;

Action make = null;// the variable in case

//other code

if(check == false)
{
 make = () => File.Copy(path1, path2); // the thing impossible to do
}
else
{
 make = () => File.Move(path1, path2);
}

make();//and here it should to run some code

你们太亲密了。这只是语法正确的问题。

这里是:

Action make;

if (check == false)
{
    make = () => File.Copy(path1, path2);
}
else
{
    make = () => File.Move(path1, path2);
}

make();

Action(与 Action<T>Action<T1, T2> 相对)不带任何参数,因此您必须使用 () =>.[=15 使用空参数来指明这一点=]