返回带有自定义对象的字典的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
});