Case with immediate constants "SIN", "COS" etc. is the worst you could invent. If these are buttons, give each variable a semantic name and add a handler to each button individually, but share the handler code, parametrize if. A parameter could be of some enumeration type, not string:
enum Operator { sin, cos, tag, }
Make a dictionary which finds a delegate instance by each operator's value:
using OperatorDictionary = System.Collections.Generic.Dictionary<Operator, OperatorApplication>;
delegate double OperatorApplication(double left, double right);
The same idea works if you parse text with expression. Parse it into some logical structure, where the operator code is enumeration shown above, not string. Something like that. With your immediate constants of the string type, even with explicit string constants, you will get sunk in support issues pretty soon. Don't lock yourself.
—SA