Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
返回带有自定义对象的字典的C#类&;多字符串对_C#_Class_Dictionary - Fatal编程技术网

返回带有自定义对象的字典的C#类&;多字符串对

返回带有自定义对象的字典的C#类&;多字符串对,c#,class,dictionary,C#,Class,Dictionary,我想创建一个类,返回一个构造的字典。我不确定如何编写构造函数来返回字典,如何初始化与键配对的多个字符串值,我发现的唯一示例是非常粗略的草稿。下面是一个粗略的例子: namespace MyApp.Helpers { public enum HouseSize { Big, Medium, Small } class Houses { public static Dictionary<Ho

我想创建一个类,返回一个构造的字典。我不确定如何编写构造函数来返回字典,如何初始化与键配对的多个字符串值,我发现的唯一示例是非常粗略的草稿。下面是一个粗略的例子:

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*/);
    }
}
名称空间MyApp.Helpers
{
公屋面积
{
大的
中等,
小的
}
阶级住宅
{
公共静态字典(u dictionaryofhouse);;
公共静态词典库
{
得到
{
如果(_dictionaryofhouse==null)
装载机();
归还房屋;
}
}
}
专用静态无效装载机()
{
_字典屋=新字典;
_DictionaryOfHouse.Add(HouseSize.Big,/*在这里添加字符串属性,如红色,2层,建于1975年*/);
_DictionaryOfHouse.Add(HouseSize.Small,/*在这里添加字符串属性,如Blue,1层,建于1980年*/);
}
}

您可以使用
列表
而不是简单的
字符串
。或者另一个包含属性的类,例如:

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
}

首先返回
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);
    }

使用房屋尺寸的现有枚举:

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
});
公共类房屋属性{
公共字符串颜色{get;set;}
公共整数NumFloors{get;set;}
公共整数年{get;set;}
}
//创建房屋尺寸字典
//使用列表,以便您可以拥有多个房屋
//一个房子大小,甚至可以有相同的颜色,数字
//楼层数和/或年份数
Dictionary house Dictionary=新字典();
//初始化房屋大小
添加(HouseSize.Big,new List());
添加(HouseSize.Medium,new List());
添加(HouseSize.Small,new List());
//将2013年的一层桃花心木大房子添加到字典中
HouseDictionary[HouseSize.Big]。添加(新的HouseProperties(){
color=“桃花心木”,
NumFloors=1,
年份=2013年
});

首先,您需要将方法
装载机
放入
装载机
类中。否则我不知道你到底想要什么。你能详细说明你的问题吗?所以你只能有一个房子,每个大小???构造函数返回字典的唯一方法是如果你从dictionary类继承。我不认为这是你真正想要的。你能提供一个样本结果应该是什么样的吗?我意识到我可能写得完全错误。我的观点是,我不能(清楚地)编写一个类,也找不到一个可以用来工作的例子
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
});