我知道这是一个奇怪的问题,但这里有一大堆代码可以更好地解释我想要做的事情。
char plus = '+'; //Creating a variable assigning it to the + value.
//Instead of using + we use the variable plus and expect the same outcome.
Console.WriteLine(1 + plus + 1);
Console.ReadLine(); //Read the line.
但由于某种原因,控制台读出45 ......很奇怪吧?所以,如果你明白我想要做什么,你能解释并告诉我怎么做?
答案 0 :(得分:4)
您可以为此目的使用代理:
void int Add( int a, int b ) { return a + b; }
void int Subtract( int a, int b ) { return a - b; }
delegate int Operation( int a, int b );
Operation myOp = Add;
Console.WriteLine( myOp( 1, 1 ) ); // 2
myOp = Subtract;
Console.WriteLine( myOp( 1, 1 ) ); // 0
此外,您可以使用lambdas而不是命名方法:
myOp = (a,b) => a + b;
答案 1 :(得分:2)
如果您使用的是.Net 3.5或更高版本,则可以使用Func<>
和lambdas(而不需要明确使用委托):
Func<int, int, int> plus = (a, b) => a + b; //Creating a variable assigning it to the + value.
//Instead of using + we use the variable plus and expect the same outcome.
Console.WriteLine(plus(1, 1));
Console.ReadLine(); //Read the line.