Как правильно создать класс 'typedef' (обертка) в c#? - PullRequest
0 голосов
/ 31 марта 2020

Я все еще новичок в C#, и многие вещи об этом не имеют смысла для моего исторически сложного C ++. Например, мне нужно сделать List из Tuples из Tuples. Я бы сделал это с typedef в C ++, но я вижу, что на самом деле такого не существует в C#. Я нахожу это раздражающим, но что еще более важно, у меня есть это ужасное чувство, что я делаю это неправильно, особенно из-за того, что я «перегружаю» метод Add.

using System;
using System.Collections.Generic;
namespace MyTypeDefs
{
    internal class RangesAndCoeffs
    {
        private List<Tuple<Tuple<int, int>, Tuple<double, double>>> _rangesAndCoeffs;

        public RangesAndCoeffs()
        {
            _rangesAndCoeffs = new List<Tuple<Tuple<int, int>, Tuple<double, double>>>();
        }

        public void Add(Tuple<int, int> range, Tuple<double, double> coeffs)
        {
            _rangesAndCoeffs.Add(new Tuple<Tuple<int, int>, Tuple<double, double>>(range, coeffs));
        } 
        public Tuple<double, double>? GetCoeffsFromIndex(int index)
        {
            foreach (var rangeAndCoeffs in _rangesAndCoeffs)
            {
                if (index > rangeAndCoeffs.Item1.Item1 && index < rangeAndCoeffs.Item1.Item2)
                    return rangeAndCoeffs.Item2;
            }
            return null;
        }
    }
}

У меня крадется подозрение, что есть более элегантный и безопасный способ сделать это. Это внутренний класс, поэтому он не обязательно должен быть водонепроницаемым, но мне определенно нужно избегать ввода List<Tuple<Tuple<int, int>, Tuple<double, double>>> 1000 раз.

Я знаю, что это довольно расплывчато, поэтому мои извинения перед SO гуру , Я просто искал несколько советов по стилю и ничего не мог найти в Интернете. Любые указатели на соответствующие статьи приветствуются.

Кстати, у меня есть несколько интересных идей по этому поводу: ( Почему бы не наследовать от List ? ), но это немного отличается вопрос.

...