C # dynamic statement

Is it possible to have a dynamic operator in C #?

string aString = "5"; int a = 5; int b = 6; string op = "<"; //want to do something like dynamically without checking the value of op if( a op b) 
+4
source share
4 answers

You cannot create dynamic statements, but you can wrap the statement in a delegate. You can use lambdas to simplify the syntax.

 Func<int,int,int> opPlus = (a,b) => a + b; Func<int,int,int> opMinus = (a,b) => a - b; // etc.. // now you can write: int a = 5, b = 6; Func<int,int,int> op = opPlus; if( op(a,b) > 9 ) DoSomething(); 

Although this is not certain - the future direction for C # is to implement the compiler as a service. Thus, at some point it may be possible to write code that dynamically evaluates the expression.

+16
source

Pigging on LBushkin's answer:

 Func<int, int, bool> AGreaterThanB = (a,b) => a > b; Func<int, int, bool> ALessThanB = (a,b) => a < b; Func< int, int, bool> op = AGreaterThanB; int x = 7; int y = 6; if ( op( x, y ) ) { Console.WriteLine( "X is larger" ); } else { Console.WriteLine( "Y is larger" ); } 

http://msdn.microsoft.com/en-us/library/bb549151.aspx

+3
source

You may find something like Flee . There are others, but their names are leaving me right now.

+1
source

C # 4.0 will have a dynamic keyword for dynamic input.

-1
source

All Articles