我要瘋了。這可能是因爲我錯過了一些規則,但如果是這樣,那麼請告訴我。字典與對象作爲價值
我試圖創建一個Dictionary
與一個字符串的鍵和一個匿名對象作爲值。或者,其實我不只是在嘗試,我正在做。 但是當我想改變對象中的特定參數時,它會出錯。
我宣佈字典是這樣的:
var areas = new Dictionary<string, object>
{
{"Key1", new {name = "Name1", today = 0, all = 0}},
{"Key2", new {name = "Name2", today = 0, all = 0}},
...
}
然後我假設我可以這樣做:
foreach (var area in areas.Keys.ToArray())
{
var areaname = areas[area].name;
}
但Visual Studio的不同意,並拒絕編譯。不過,如果我寫這篇文章,一切都按我的想法工作 - 但這並不能真正幫助我,這隻會讓我更加沮喪。
var areaname = new
{
name = "Nametest", today = 0, all = 0
};
var testname = areaname.name;
我在做什麼錯?爲什麼它不適合我?這樣做根本不可能嗎?
感謝您的所有答案,他們肯定會清理一些東西! 我想我可能一直在混淆類型對象與對象的思想,即類,在C#中的挫敗感。我會重新考慮整個設計業務,可能會做一些完全不同的事情,而不是使用邪惡或骯髒的解決方案。雖然有趣,但我不認爲我與C#的關係已經發展到如此遙遠!
您是否嘗試過使用「動態」而不是你的值類型的「對象」? –
編譯器無法解析從字典中檢索的對象(值)上的Name屬性。對於var的情況,編譯器會放入真正的on-the-fly類型來代替var,協助編譯器。爲什麼在這種情況下需要匿名類型?當你知道什麼屬性應該存在於所有的值,即它不是未知的。 – Gishu