2013-05-02 47 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 
}); 
相关问题