Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
216 of 1492 menu
◀ ▶

Интерфейс INumber

INumber<T> из System.Numerics ограничивает T типами вроде int и double, для которых определены +, - и сравнение. В обобщённом методе можно писать a + b без дублирования кода для каждого типа. Статические функции Math и MathF работают с конкретными типами напрямую.

Синтаксис

using System.Numerics; static T Add<T>(T a, T b) where T : INumber<T> { return a + b; }

Пример

Давайте сложим два int через INumber<T>:

using System; using System.Numerics; class Program { static T Add<T>(T a, T b) where T : INumber<T> { return a + b; } static void Main() { int res = Add(3, 5); Console.WriteLine(res); } }

Результат выполнения кода:

8

Пример

Давайте вычтем одно целое из другого:

using System; using System.Numerics; class Program { static T Sub<T>(T a, T b) where T : INumber<T> { return a - b; } static void Main() { int res = Sub(5, 2); Console.WriteLine(res); } }

Результат выполнения кода:

3

Пример

Давайте сравним два числа через CompareTo у T:

using System; using System.Numerics; class Program { static int Compare<T>(T a, T b) where T : INumber<T> { return a.CompareTo(b); } static void Main() { Console.WriteLine(Compare(1, 3)); Console.WriteLine(Compare(5, 5)); } }

Результат выполнения кода:

-1 0

Смотрите также

  • Math,
    статические функции над числами
  • Int32,
    который реализует INumber<int>
  • MidpointRounding,
    который задаёт правило округления
  • тип int,
    использованный в вызове Add
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить