将运算符存储在变量中

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)


Son*_*nül 8

用一个Function delegate;

封装具有一个参数的方法,并返回由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.