为什么Tuple的项目是ReadOnly?

Dra*_*ake 50 .net tuples .net-4.0 readonly

我想用Tupleclass来存储我程序中需要的2个整数信息(StartAddress,EndAddress).

但我发现Tuple项是ReadOnly,所以如果我需要为一个项设置一个值,我需要重新实例化一个元组.

这个设计决定背后的原因是什么?

Nol*_*rin 51

元组起源于函数式编程.在(纯粹的)函数式编程中,一切都是设计不可变的 - 某个变量在任何时候都只有一个单一的定义,就像在数学中一样.在将功能风格集成到C#/ .NET中时,.NET设计者明智地遵循了相同的原则,尽管它最终是一种主要的命令式(混合?)语言.

注意:虽然我怀疑元组是不可变的并不会让你的任务变得更加困难,但是你也可能想要使用匿名类型(或者只是一个简单的结构).

  • 它是CLR设计师,而不是C#设计师..NET 4中的System.Tuple也被F#隐式使用. (10认同)
  • BCL开发人员比C#设计师更多 - 有一个决定,现在F#加入了稳定的.Net语言,拥有统一的Tuple类型. (4认同)