有效地使用元组来存储对象

时间:2013-10-09 04:32:11

标签: c# asp.net tuples

我一直在研究一些代码,并开始使用Tuple来保存一些数据,直到其他一些函数被处理,然后我使用列表中的元组从中获取一些信息并发送电子邮件,例如:

List<Tuple<Customer, Contact, Product>> tupleInfo = 
   new List<Tuple<Customer, Contact, Product>>();

然后我通过调用我传递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;
}

我的问题是,这有多高效,以这种方式使用元组是否可以?我是否通过使用元组交易性能?

我是新手,所以在我做错之前想知道。

2 个答案:

答案 0 :(得分:1)

我认为使用元组没有任何性能下降。它们是通用的,所以它就像你编写了自己的容器类一样好。

答案 1 :(得分:1)

" started using Tuple just to hold some data for a bit "

如果这是原因,那么使用元组没有任何害处。

通常,元组用于保存一些数据,其中创建表示相同信息的类可能看起来毫无意义。

您可能想要做一些业务逻辑,为此,创建新类是额外的开销并且无关紧要。

但是还要记住一件事,不建议使用返回类型为TUPLE的函数。这没有任何意义。

例如,返回类型为EmailContent的函数比返回类型为元组的函数更清晰,该元组具有某些签名,如Tuple<string,int,bool,string,string>

就个人而言,我会将Tuples用作私人会员,或者在某些情况下使用较短的生命和不可重用的组件。

所以,在这种情况下,只要您认为“holding some data for a bit”,就完全可以了。