Обобщенная функция для арифметических операций с числами - C#
Формулировка задачи:
Подскажите, пожалуйста, можно ли сделать обобщенную функцию, которая вычисляет среднее арифметическое элементов заданного массива? Нужно, чтобы эта функция работала с массивами чисел разных типов (int, uint, short, ushort, byte, sbyte, long, ulong, double, float, decimal). Если я пытаюсь сделать обобщенную функцию, принимающую в качестве параметра массив элементов T и возвращающую значение типа Т, то компилятор сразу ругается на использование операторов "+" и "/" для элементов Т. Как можно задать ограничение, что Т должно быть одним из заданных мною числовых типов? Можно ли как-то выполнить задачу путём реализации одной обобщенной функции, или придётся для каждого из 11 типов написать отдельную функцию, вычисляющую среднее арифметическое элементов массива чисел этого типа?
Решение задачи: «Обобщенная функция для арифметических операций с числами»
textual
Листинг программы
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- namespace ConsoleApplication30
- {
- class Program
- {
- static void Main(string[] args)
- {
- int[] myInts = { 2, 6, 4, 3, 6, 8, 3 };
- double[] myDouble = { 2.4, 9.5, 6.2 };
- int i = MyAverage<int>(myInts);
- double d = MyAverage<double>(myDouble);
- }
- static T MyAverage<T>(T[] arg)where T:struct
- {
- dynamic sum = default(T);
- foreach (T t in arg)
- sum += t;
- return sum / arg.Length;
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д