Я все еще новичок в 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 ? ), но это немного отличается вопрос.