很多時候我碰到需要小的不可變數據結構。在其他情況下,其他人可能會在這些情況下使用元組,但我真的不喜歡元組不會很好地閱讀並且不表達那麼多的意義。 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