很多时候我碰到需要小的不可变数据结构。在其他情况下,其他人可能会在这些情况下使用元组,但我真的不喜欢元组不会很好地阅读并且不表达那么多的意义。 int
的Value2
不告诉我任何东西。在C中编写不可变结构的最短路径#
一个例子是为两个属性的组合创建查找表(词典),即Name
和Rating
。
,使这些情况,我知道的不可变结构的最短路径是这样的:
public struct Key
{
public string Name { get; private set; }
public int Rating { get; private set; }
public LolCat(string name, int rating) : this()
{
Name = name;
Rating = rating;
}
}
// useage
var key = new Key("MonorailCat", 5);
在我看来还有在这里有很多“句法脂肪”,我想摆脱。 当我直接暴露字段时,我可以使它更具可读性。
public struct Key
{
public string Name;
public int Rating;
}
// useage
var key = new Key { Name = "MonorailCat", Rating = 5 };
我真的很喜欢这样的语法,因为几乎没有任何语法上的脂肪。当然,最大的缺点是它不是一成不变的,所有这些都是危险的。
在理想情况下,我只是想为这个特殊的类型,与定义的实际最低限度,如:
public immutable struct Key
{
string Name;
int Rating;
}
// useage (needs compiler magic)
var key = new Key(Name: "MonorailCat", Rating: 5);
问题
是否有现实世界的解决方案一些更接近底部的例子,减少一个非常简单的不可变结构的语法脂肪量?
为什么在这种情况下不使用类? – Kao 2014-09-11 12:21:52
为什么不将属性暴露为'readonly'字段?你至少会删除'{get;私人设置;}'(你仍然需要构造函数)。 – casperOne 2014-09-11 12:23:45