有没有办法为元组项目提供有意义的名称?

时间:2011-11-20 07:27:08

标签: .net vb.net

通过访问Tuple属性来检索ItemX中的项目。 有没有一种方法来命名每个项目,以便使用元组更具可读性?

代码:

寻找这样的事情:

Dim l As New Tuple(Of String, Integer)
l.Name
l.ID

而不是:

Dim l As New Tuple(Of String, Integer)
l.Item1
l.Item2

3 个答案:

答案 0 :(得分:7)

不,元组类型中没有任何内容可以帮助你解决这个问题。选项:

  • 如果需要在多个方法中传递值,请使用适当的属性创建自己的类型。 (如果你真的想要,你可以Tuple派生,只提供委托给Item1Item2的属性,但我不确定我会不会)
  • 如果您只需要一种方法中的值,请使用anonymous type

答案 1 :(得分:5)

在C#7版本中,我们具有为Tuple Values提供友好名称的功能。 注意:只需直接键入此处未编译的代码。

e.g

(int Latitude, int Longitude, string city) GetPlace()
{
    return(20,30,"New York");    
}

var geoLocation = GetPlace();
WriteLine($"Latitude :{geoLocation.Latitude}, Longitude:{geoLocation.Longitude}, City:{geoLocation.city}");

答案 2 :(得分:1)

您可以为Tuple编写几个扩展方法:First返回第一个元素,Rest返回第二个元素的子元素。这可能是一个通用的易于解决的问题。

如果你打电话给First car and Rest cdr,你会让很多人非常开心http://en.wikipedia.org/wiki/CAR_and_CDR