2016-03-03 34 views
2

我只是好奇這是否可以實現:我目前有一個問題,我使用控制器來設置和獲取類內的數據,這是通過處理器端的方法和實例。C# - 使用控件的類中的陣列基礎結構

我只是想知道,因爲做public string x { get; set; }可以變得非常漫長,每個屬性,您的項目組成。

有沒有一種方法可以在類內實現這種思想?

public core Array[] (
      Option1 => string Array[] (
      Name => 'example' 
     ), 
      Option2 => String Array[] (
      Name => 'example2' 
     ) { set; get; } 
); 

當然,這只是一種理論,並不會確切的解決方案。我想知道如果我會:

1)需要一個控制器時,將數據附加到索引的。
2)需要實例控制器處理的類,或者如果我可以通過主類方法實現它。
3)需要多維數組或列表。

我目前的解決方案是囉嗦,並且由於Core網站使用的數據量很大,對於添加的每個功能,響應都是遞減的。

任何人都可以參考任何基礎設施的參考資料,或者可以通過這種思想來實際分配屬性嗎?

提前感謝您。

編輯:我的意思是這樣(PHP):

$example = array (
    'location1' => array(
     'location_id' => 1 
    ), 
    'location2' => array(
     'location_id' => 2 
    ) 
); 

現在,數據可以被處理簡單:

foreach($example as $k=>$v){ // todo: handle }

所以這裏$ K爲您的數組名稱(即它可能是,名稱,地址)和$ v變成你的嵌套數組,使得數據處理更容易。

+2

型'prop'然後按Tab鍵 – dotctor

+0

我是新來的'C#',我若爲此道歉問題不是最好的描述。我不理解你的評論是指什麼?感謝您的輸入,然而,@dotctor – KDOT

+0

哦,我只是厭倦了,它自動做'get;設置;'爲我。哈哈,多數民衆贊成真棒! – KDOT

回答

4

雖然我非常不贊同與這種模式的用法,我仍然認爲這是很有價值的瞭解。

我認爲您正在尋找Dictionary<TKey, TValue>。它提供了一種將任何類型的鍵映射到任何類型的值的方法。爲了您的使用情況:

IDictionary<string, string> DynamicProperties {get; set;} = new Dictionary<string, string> 
{ 
    { "FirstName", "John" }, 
    { "LastName", "Doe" } 
}; 

然後,您可以遍歷你的「性」有一個循環:

foreach(KeyValuePair pair in DynamicProperties) 
{ 
    string key = pair.Key; // "FirstName", "LastName" 
    string value = pair.Value; // "John", "Doe" 
    // Use them as you wish. 
} 

你可以有字典的字典了。要匹配您的更新示例:

IDictionary<string, IDictionary<string, int>> Example {get; set;} = new Dictionary<string, IDictionary<string, int>> 
{ 
    {"location1", new Dictionary<string, int> {{"location_id", 1}}}, 
    {"location2", new Dictionary<string, int> {{"location_id", 2}}} 
}; 

但看看這段代碼 - 您正在尋找簡單性。這並不簡單,也不簡單,清楚或可測試。擁有類和屬性是C#中的一種方式。

我認爲這裏問題的根源在於你用C#編碼,但用PHP思想思考。C#是強類型,而PHP是弱類型,(見本wiki article),你需要適當調整自己的思想。

+0

請參閱我在PHP中使用了4年。最近得到了C#的學徒,並且看到了C#多長時間的瘋狂。我仍然不明白人們爲什麼不使用Hack,因爲它使用了像你所說的那樣弱的**語言,但是具有「C」語言的優化性能。這些C#控制器,處理程序和實例非常混亂,以至於:/感謝您幫助我理解! – KDOT

+0

@ KyleE4K Longer不一定更糟糕,編寫最緊湊的代碼不應該是一個目標,編寫最具可維護性和可讀性的代碼應該是。很多語言都有不同的意識形態,你可以這樣看待它:當在羅馬,像羅馬人那樣做...... – Icepickle

+0

Gediminas,將字典設置爲「IDictionary '看不到只有字符串在那裏?然後,可以很容易地添加一個新的Dictionary 作爲任何屬性的值?雖然我非常贊同你的批評意見;) – Icepickle