C# 如何在类中实现Foreach,以便获得每个键的名称和值?
我想用foreach来表示区域,比如C# 如何在类中实现Foreach,以便获得每个键的名称和值?,c#,foreach,C#,Foreach,我想用foreach来表示区域,比如 public class Zone { public string zoneID { get; set; } public string zoneName { get; set; } public string zonePID { get; set; } } 我只是不知道如何在Zone类中实现GetEnumerator你不能用简单的方法枚举类的属性 在类中使用字符串数组、字符串列表或字典 注意:确实可以使用反射枚举类的属性,但在您的
public class Zone
{
public string zoneID { get; set; }
public string zoneName { get; set; }
public string zonePID { get; set; }
}
我只是不知道如何在Zone类中实现GetEnumerator你不能用简单的方法枚举类的属性
在类中使用字符串数组、字符串列表或字典
注意:确实可以使用反射枚举类的属性,但在您的情况下,这不是一种方法。您不能用简单的方法枚举类的属性
var zone = new Zone(){zoneId = "001", zoneName = "test"};
foreach(var field in zone)
{
string filedName = field.Key; //for example : "zoneId"
string filedValue = filed.value; //for example : "001"
}
在类中使用字符串数组、字符串列表或字典
注意:确实可以使用反射枚举类的属性,但在您的情况下,这不是方法。您可以为Zone配备此方法:
var zone = new Zone(){zoneId = "001", zoneName = "test"};
foreach(var field in zone)
{
string filedName = field.Key; //for example : "zoneId"
string filedValue = filed.value; //for example : "001"
}
foreach(var field in zone)
{
string filedName = field.zoneID; //Id of property from Zone Class
string filedValue = filed.zoneName ; //name of property from Zone Class
}
那你就可以说了
或者,您可以将GetEnumerator实现为迭代器块,在其中返回三个新的KeyValuePair
我并不是说这种设计特别值得推荐。你可以用这种方法装备Zone:
foreach(var field in zone)
{
string filedName = field.zoneID; //Id of property from Zone Class
string filedValue = filed.zoneName ; //name of property from Zone Class
}
那你就可以说了
或者,您可以将GetEnumerator实现为迭代器块,在其中返回三个新的KeyValuePair
我不是说这种设计特别值得推荐。谢谢eveyrone!看来我需要用反思来实现目标
public Dictionary<string, string> AsDictionary()
{
return new Dictionary<string, string>
{
{ "zoneID", zoneID },
{ "zoneName", zoneName },
{ "zonePid", zonePid },
};
}
只是不知道这是否是一个好的解决方案。谢谢eveyrone!看来我需要用反思来实现目标
public Dictionary<string, string> AsDictionary()
{
return new Dictionary<string, string>
{
{ "zoneID", zoneID },
{ "zoneName", zoneName },
{ "zonePid", zonePid },
};
}
只是不知道这是否是一个好的解决方案。要得到一个好的答案,你可能应该解释一下你实际上想要实现的目标。您可以使用反射来实现IEnumerable,但我怀疑这是否是解决更大问题的好方法。一种常见的替代方法是,您的类使用字典来维护字段名和值,然后枚举这些字段名和值非常简单,因为这正是字典在枚举时产生的结果。但是问题中没有足够的信息来知道正确的答案。这肯定是一个,也就是说,你认为这个解决方案A应该解决一些问题B,但不是要求我们帮助你解决B,而是要求我们帮助你解决不起作用的解决方案A。为了得到一个好的答案,你可能应该解释一下你到底想要完成什么。您可以使用反射来实现IEnumerable,但我怀疑这是否是解决更大问题的好方法。一种常见的替代方法是,您的类使用字典来维护字段名和值,然后枚举这些字段名和值非常简单,因为这正是字典在枚举时产生的结果。但是问题中没有足够的信息来知道正确的答案。这肯定是一个,也就是说,你认为这个解决方案A应该解决一些问题B,但你不是要求我们帮助你解决B,而是要求我们帮助你解决不起作用的解决方案A。你好,虽然这很可能回答问题,请注意,其他用户可能没有您的知识渊博。你为什么不加一点解释,解释一下这段代码的工作原理呢?谢谢您好,虽然这可能很好地回答了这个问题,但请注意,其他用户可能没有您的知识渊博。你为什么不加一点解释,解释一下这段代码的工作原理呢?谢谢