I want to write an instrumental generic function
    public static T F<T>(T a, T b) 
    {
        return a + b;
    }
But, it need the parameter has operators like +, -, etc. How do I implement this?
I want to write an instrumental generic function
    public static T F<T>(T a, T b) 
    {
        return a + b;
    }
But, it need the parameter has operators like +, -, etc. How do I implement this?
This is not possible without a bit of tricking, because, as you may have notices, there's no way you can make the compiler know that instances of the unknown type T can be added. The following works, though:
public static T F<T>(T a, T b) 
{
    dynamic a1 = a;
    dynamic a2 = b;
    return a1 + b1;
}
It has a few issues, though: Since the operation is compiled at runtime, it may be slower than a default add, and it will compile, no matter what T is. Only if at runtime T has no operator+, it will throw an exception.