我正在研究元组的新C#特性.我很好奇,元组设计要解决什么问题?
您在应用中使用了什么元组?
更新
感谢到目前为止的答案,让我看看我是否在脑子里直截了当.已经指出了元组的一个很好的例子作为坐标.这看起来不错吗?
var coords = Tuple.Create(geoLat,geoLong);
Run Code Online (Sandbox Code Playgroud)
然后像这样使用元组:
var myLatlng = new google.maps.LatLng("+ coords.Item1 + ", "+ coords.Item2 + ");
Run Code Online (Sandbox Code Playgroud)
那是对的吗?
Eri*_*ert 117
在编写程序时,想要逻辑地将一组值组合在一起是非常普遍的,这些值没有足够的通用性来证明创建类.
许多编程语言允许您在逻辑上将一组不相关的值组合在一起,而无需仅以一种方式创建类型:
void M(int foo, string bar, double blah)
Run Code Online (Sandbox Code Playgroud)
逻辑上,这与采用一个参数的方法M完全相同,该参数是int,string,double的3元组.但我希望你不会真正做到:
class MArguments
{
public int Foo { get; private set; }
... etc
Run Code Online (Sandbox Code Playgroud)
除非MArguments在业务逻辑中有其他含义.
"在一些比一个类更轻量级的结构中将一组其他不相关的数据组合在一起"的概念在很多很多地方都很有用,而不仅仅是方法的形式参数列表.当一个方法有两个要返回的东西,或者你想要从两个数据而不是一个数据中键入字典时,它很有用,依此类推.
像F#这样支持元组类型的语言本身为用户提供了很大的灵活性; 它们是一组非常有用的数据类型.BCL团队决定与F#团队合作,为框架标准化一种元组类型,以便每种语言都能从中受益.
但是,此时C#中的元组没有语言支持.元组只是与任何其他框架类一样的另一种数据类型; 他们没什么特别的.我们正在考虑在假设的未来版本的C#中为元组添加更好的支持.如果有人对你希望看到哪些涉及元组的功能有任何想法,我很乐意将它们传递给设计团队.现实场景比理论思考更有说服力.
Tob*_*oby 12
它提供了一种替代方法,ref或者out如果您有一个方法需要返回多个新对象作为其响应的一部分.
它还允许您使用内置类型作为返回类型,如果您只需要将两个或三个现有类型混搭,并且您不希望仅为此组合添加类/结构.(曾经希望函数可以返回一个匿名类型吗?这是对这种情况的部分答案.)