Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/18: Рейтинг темы: голосов - 18, средняя оценка - 4.67
7 / 7 / 7
Регистрация: 25.03.2015
Сообщений: 136

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

27.11.2015, 00:11. Показов 3284. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как сделать универсальный метод, который будет перемножать переменные?
Пример с типом int
C#
1
2
3
4
        static int Multi(int a, int b) 
        {
            return a * b;
        }
Но числа могут быть int и double
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.11.2015, 00:11
Ответы с готовыми решениями:

Обобщенный метод для сравнения двух чисел
Как создать метод, который будет сравнивать 2 числа с 0 и если они будут оба больше 0, то выводить "Yes"? Пример с типом int ...

Как создать обобщенный метод для работы с EF?
Собственно вот и проблема. В проекте под ASP.NET Core создал репозиторий для работы с базой данных. В итоге, когда мне надо сохранить...

Обобщенный метод для двух разных типов
есть два класса - разные , которые ничем не отличаются, как мне сделать общий метод, который будет работать с ними обома ?

2
25 / 25 / 23
Регистрация: 07.06.2015
Сообщений: 142
27.11.2015, 04:49
попробуйте здесь поискать:
https://msdn.microsoft.com/ru-... .110).aspx
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18298 / 14222 / 5368
Регистрация: 17.03.2014
Сообщений: 28,900
Записей в блоге: 1
03.12.2015, 21:35
KinGelaim, обобщения в чистом виде такое не не дадут сделать, но можно выкрутиться с помощью expression trees. Способ подсмотрен в библиотеке MiscUtils Джона Скита.
C#
1
2
3
4
5
6
7
Console.WriteLine(Multiply(4,56));
Console.WriteLine(Multiply(4.2,0.3));
 
static T Multiply<T>(T a, T b) 
{
    return Operator<T>.Multiply(a,b);
}
Operator<T>
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
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); };
        }
    }    
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.12.2015, 21:35
Помогаю со студенческими работами здесь

Создать таблицу умножения 9х9 с рамкой для всех чисел
Нужно создать таблицу умножения 9х9 с рамкой для всех чисел, чтобы каждая цифра была в окошке. Нашел похожую, но она для 10х10 и рамка...

Как использовать обобщенный метод в не-обобщенном классе?
Как реализовать обобщенное программирование (дженерики) для двух разных типов-интерфейсов, которые (методы которых) должны вызываться в...

обобщенный класс для чисел
Всем привет. Написал тип numb для целых и дробных чисел, но не смог написать перегрузку оператора &lt;&lt; для вывода через cout. Вот что...

Как создать матрицу 3х3 для дальнейшего ее умножения
Я дико извиняюсь за довольно глупый вопрос, но как создать матрицу 3х3 для дальнейшего ее умножения? 2х2 получилось, а 3х3 никак не могу...

Обобщенный метод преобразовать в метод с параметром типа
Добрый день! Есть метод: public void FillListAndDGV&lt;T&gt;(List&lt;Expression&lt;Func&lt;T, object&gt;&gt;&gt; Expr) where T : class ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
Программный отбор значений справочника
Maks 21.03.2026
Установка программного отбора значений справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит предопределенное значение перечислений. Процедура. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru