创建一个包含动作的变量
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 使用空参数来指明这一点=]
我正在尝试做一个变量,当我调用它时,它会执行代码。
例如
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 使用空参数来指明这一点=]