[問題] nest dictionary 取值unbox的問題
小弟最近剛入門C#
不懂之處還請大大們多包涵
由於前陣子在寫python
就想拿C#的Dictionary撰寫成類似python的語法
例如: dict <- {"key1" : {"key2" : value } }
理想的狀況下希望 dict["key"]["key2"] -> value 可以取出value來
為了通用的緣故
我宣告成這樣
class Node : Dictionary< object,object >{
// 多載Add
public void Add( object KEY ){
this.Add( KEY, new Node() );
}
// 改寫[]
public Node this [ object KEY ]{
get{
object RESULT;
this.TryGetValue( KEY, RESULT );
// 如果不是末端的話就把 Node傳回去
if( RESULT.GetType().Name == "Node" ){
return (Node)RESULT;
}
// 如果是末端的話 就把Value傳回去
else{
return RESULT:
}
}
}
}
這樣其實已經符合 理想上語法的要求
只是在 改寫[] 運算子的回傳值會有問題
因為[]不能被多載 只能改寫
http://msdn.microsoft.com/zh-tw/library/8edha89s.aspx
目前想到的可能有
1. 回傳值有沒有可能改寫成可回傳任意型態的 類似template那樣
我用過dynamic編譯會有錯誤 var只能用在local
2. 有沒有可能讓C#自己做unbox??
因為我用GetType().Name
每個object其實都知道自己要用哪一種形態unbox
只是編譯器沒做 是基於什麼樣的原因??
這功能其實還滿便利的
3. 或是有比較簡明的辦法 可以取這種巢狀Dictionary的值
畢竟我不想看到前面有一堆的unbox語法
謝謝大家
--
連長:鞋子收好好的怎麼會不見 鞋子會飛是不是
新兵:報告連長,鞋子本來就會飛
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 119.77.130.173
※ 編輯: hello1988 來自: 119.77.130.173 (02/21 22:25)
※ 編輯: hello1988 來自: 119.77.130.173 (02/21 22:25)
推
02/21 23:26, , 1F
02/21 23:26, 1F
推
02/22 00:14, , 2F
02/22 00:14, 2F
→
02/22 00:15, , 3F
02/22 00:15, 3F
→
02/22 00:33, , 4F
02/22 00:33, 4F
→
02/22 00:36, , 5F
02/22 00:36, 5F
C_Sharp 近期熱門文章
PTT數位生活區 即時熱門文章