JMK*_*JMK 11 c# variables operators
有没有办法将运算符存储在变量中?我想做这样的事情(伪代码):
void MyLoop(int start, int finish, operator op)
{
for(var i = start; i < finish; op)
{
//do stuff with i
}
}
Run Code Online (Sandbox Code Playgroud)
然后我可以像这样调用这个方法:
MyLoop(15, 45, ++);
MyLoop(60, 10, --);
Run Code Online (Sandbox Code Playgroud)
C#中是否存在类似的内容?
Maa*_*ten 23
我想这样的事情.您没有定义运算符,而是一个为您进行更改的函数(lambda).
void MyLoop(int start, int finish, Func<int, int> op)
{
for(var i = start; i < finish; i = op(i))
{
//do stuff with i
}
}
Run Code Online (Sandbox Code Playgroud)
然后我可以像这样调用这个方法:
MyLoop(15, 45, x => x+1);
MyLoop(60, 10, x => x-1);
Run Code Online (Sandbox Code Playgroud)
封装具有一个参数的方法,并返回由TResult参数指定的类型的值.
void MyLoop(int start, int finish, Func<int, int> op)
{
for(var i = start; i < finish; i = op(i))
{
//do stuff with i
}
}
Run Code Online (Sandbox Code Playgroud)
然后;
MyLoop(15, 45, x => ++x);
MyLoop(60, 10, x => --x);
Run Code Online (Sandbox Code Playgroud)
这是一个DEMO.