Я работал над некоторым кодом и начал использовать Tuple только для того, чтобы немного хранить некоторые данные до тех пор, пока некоторые другие функции не будут обработаны, а затем я использую список Tuple в списке, чтобы получить некоторую информацию от него и отправить по электронной почте, например:Использование Tuples эффективно для хранения объектов
List<Tuple<Customer, Contact, Product>> tupleInfo =
new List<Tuple<Customer, Contact, Product>>();
Затем я добавить различные объекты к нему путем вызова метода, где я прохожу клиентов, контакт и продукт:
Tuple<Customer, Contact, Product> info =
new Tuple<Customer, Contact, Product>(myCustomer, myContact, myProduct);
info.Add(info);
в конце после того, как я обрабатываю все мои вещи в других методах этот список будет содержать максимум 10 кортежей, которые я тогда послать метод, который отправляет по электронной почте, что-то вроде этого:
private ActionResult SendEmails(List<Tuple<Customer, Contact, Product> list)
{
ActionResult result = new ActionResult;
foreach(Tuple<Customer, Contact, Product> info in list)
{
//Here i just grab some the information
//from each tuple, email, product,contact
//contact info and customer info and send
//a personalized email, then do the same with the next records
}
return result;
}
Мой вопрос, насколько эффективно это, это нормально использовать кортежи так ?, я торговал производительность с помощью кортежей?
Я новичок в этом, поэтому хотел бы знать, прежде чем делать это неправильно.
Отсутствие торговли производительностью ... но кортежи ИМО следует в первую очередь объявлять и использовать близко друг к другу; редко обмениваются между типами в одной и той же сборке и почти никогда не возвращаются из API, потребляемого другими. Это особенно верно для типов, которые могут быть легко назначены друг другу (например, Tuple ... нет безопасности времени компиляции, членом которой является, а имена членов - это только 'Item1', Item2', 'Item3', поэтому очень легко сделать ошибку). Для моего собственного здравомыслия я обычно предпочитаю внутренние занятия. –
Спасибо за ввод, основываясь на вашем опыте или знаниях. Можно ли сказать, что в том, как я использую его выше, все в порядке? – user710502
Да, это выглядит хорошо, поскольку похоже, что вы используете его как внутреннюю структуру для удобства. Вы, конечно же, не потеряете производительность, используя кортеж; есть [ничего особенного] (http://stackoverflow.com/a/3089883/453277) (хорошо или плохо) о них в C#. –