Как создать обобщенный метод для умножения чисел? - C#
Формулировка задачи:
Как сделать универсальный метод, который будет перемножать переменные?
Пример с типом int
Но числа могут быть int и double
Листинг программы
- static int Multi(int a, int b)
- {
- return a * b;
- }
Решение задачи: «Как создать обобщенный метод для умножения чисел?»
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); };
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д