Как создать обобщенный метод для умножения чисел? - C#

Узнай цену своей работы

Формулировка задачи:

Как сделать универсальный метод, который будет перемножать переменные? Пример с типом int
        static int Multi(int a, int b) 
        {
            return a * b;
        }
Но числа могут быть int и double

Решение задачи: «Как создать обобщенный метод для умножения чисел?»

textual
Листинг программы
class Operator<T>
{
    private static readonly Func<T, T, T> multiply = CreateExpression<T, T, T>(new Func<Expression, Expression, BinaryExpression>(Expression.Multiply));
    
    public static Func<T, T, T> Multiply
    {
        get { return Operator<T>.multiply; }
    }
    
    private static Func<TArg1, TArg2, TResult> CreateExpression<TArg1, TArg2, TResult>(Func<Expression, Expression, BinaryExpression> body)
    {
        ParameterExpression parameterExpression1 = Expression.Parameter(typeof (TArg1), "lhs");
        ParameterExpression parameterExpression2 = Expression.Parameter(typeof (TArg2), "rhs");
        try
        {
            return Expression.Lambda<Func<TArg1, TArg2, TResult>>(
                (Expression) body((Expression) parameterExpression1,
                (Expression) parameterExpression2),
                new ParameterExpression[2] { parameterExpression1, parameterExpression2 }
            ).Compile();
        }
        catch (Exception ex)
        {
            string msg = ex.Message;
            return (Func<TArg1, TArg2, TResult>) delegate { throw new InvalidOperationException(msg); };
        }
    }    
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.067 из 5
Похожие ответы