Обобщенная функция для арифметических операций с числами - C#

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

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

Подскажите, пожалуйста, можно ли сделать обобщенную функцию, которая вычисляет среднее арифметическое элементов заданного массива? Нужно, чтобы эта функция работала с массивами чисел разных типов (int, uint, short, ushort, byte, sbyte, long, ulong, double, float, decimal). Если я пытаюсь сделать обобщенную функцию, принимающую в качестве параметра массив элементов T и возвращающую значение типа Т, то компилятор сразу ругается на использование операторов "+" и "/" для элементов Т. Как можно задать ограничение, что Т должно быть одним из заданных мною числовых типов? Можно ли как-то выполнить задачу путём реализации одной обобщенной функции, или придётся для каждого из 11 типов написать отдельную функцию, вычисляющую среднее арифметическое элементов массива чисел этого типа?

Решение задачи: «Обобщенная функция для арифметических операций с числами»

textual
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5.  
  6. namespace ConsoleApplication30
  7. {
  8.     class Program
  9.     {
  10.         static void Main(string[] args)
  11.         {
  12.             int[] myInts = { 2, 6, 4, 3, 6, 8, 3 };
  13.             double[] myDouble = { 2.4, 9.5, 6.2 };
  14.  
  15.             int i = MyAverage<int>(myInts);
  16.             double d = MyAverage<double>(myDouble);
  17.         }
  18.  
  19.         static T MyAverage<T>(T[] arg)where T:struct
  20.         {
  21.             dynamic sum = default(T);
  22.             foreach (T t in arg)
  23.                 sum += t;
  24.             return sum / arg.Length;
  25.         }
  26.     }
  27. }

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


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

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

10   голосов , оценка 3.8 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы