2013-05-02 51 views
0

我期待創建一個返回構造字典的類。我不確定如何編碼我的構造函數以返回字典,如何初始化與鍵配對的多個字符串值,而我發現的唯一示例是非常粗略的草稿。這裏有一個粗略的例子:C#返回具有自定義對象和多個字符串對的字典

namespace MyApp.Helpers 
{ 
    public enum HouseSize 
    { 
     Big, 
     Medium, 
     Small 
    } 
    class Houses 
    { 
     public static Dictionary<HouseSize, string> _dictionaryOfHouses; 

     public static Dictionary<HouseSize, string> Houses 
     { 
      get 
      { 
       if (_dictionaryOfHouses == null) 
        LoadHouses(); 
       return _dictionaryOfHouses; 
      } 
     } 
    } 
    private static void LoadHouses() 
    { 
     _dictionaryOfHouses = new Dictionary<HouseSize, string>; 
     _dictionaryOfHouses.Add(HouseSize.Big, /*Add String Properties Here like Red, 2 Floor, Built in 1975*/); 
     _dictionaryOfHouses.Add(HouseSize.Small, /*Add String Properties Here like Blue, 1 Floor, Built in 1980*/); 
    } 
} 
+1

首先,你需要把方法'LoadHouses'內你的'房子'類。否則,我不確切地知道你在這裏要求什麼。你能詳細說明你的問題嗎? – juharr 2013-05-02 13:31:54

+0

所以你只能有一個大小不同的房子? – 2013-05-02 13:39:00

+1

構造函數返回字典的唯一方法是從字典類繼承。我不認爲這真的是你想要的。 – Cemafor 2013-05-02 13:40:52

回答

1

你可以使用一個List<string>而不是一個簡單的string。或者,也許持有的屬性,如其他類:

class HouseProperties { 
    public string Color { get; set; } 
    public string YearBuilt { get; set; } // I assume having these as strings is more 
    public string NumFloors { get; set; } // helpful then storing the number itself 
} 
0

幾件事情第一返回Dictionary可能是一個問題,IDictionary會更好。

我想看看像

private static void LoadHouses() 
    { 
     _dictionaryOfHouses = new Dictionary<HouseSize, Dictionary<string,string>; 
     houseProperties = new Dictionary<String,String>(); 
     houseProperties.Add("Colour", "Red"); 
     // etc 
     _dictionaryOfHouses.Add(HouseSize.Big, houseProperties); 
    } 

如果你感覺勇敢詞典>

現在你可以輸入你的附加屬性

所以建造年份可能是一個int和顏色枚舉..

在其'建成後,你可以訪問它

Houses[HouseSize.medium]["Colour"] 
0

使用房屋尺寸現有枚舉:

public enum HouseSize { 
    Big, 
    Medium, 
    Small 
} 

創建一個類來描述房子的屬性

public class HouseProperties { 
    public string Colour { get; set; } 
    public int NumFloors { get; set; } 
    public int Year { get; set; } 
} 

// Create a Dictionary of House Sizes 
// Use a List<HouseProperties> so you can have multiple houses 
// of a house size, that can even have the same colour, number 
// of floors and/or year 
Dictionary<HouseSize, List<HouseProperties>> HouseDictionary = new Dictionary<HouseSize, List<HouseProperties>>(); 
// Initialize the House sizes 
HouseDictionary.Add(HouseSize.Big, new List<HouseProperties>()); 
HouseDictionary.Add(HouseSize.Medium, new List<HouseProperties>()); 
HouseDictionary.Add(HouseSize.Small, new List<HouseProperties>()); 

// Adding a 2013 one-floor Mahogany Big House to the Dictionary 
HouseDictionary[HouseSize.Big].Add(new HouseProperties() { 
    Colour = "Mahogany", 
    NumFloors = 1, 
    Year = 2013 
}); 
相關問題