c#用foreach遍历数组、列表时是直接获得数据元素,而foreach哈希表时,为什么获得的是命名空间名??
Hashtableht=newHashtable();//创建哈希表htht.Add(1,"a");//往ht里添加键值对int[]num={4,5,6};foreach...
Hashtable ht = new Hashtable();//创建哈希表ht
ht.Add(1, "a"); //往ht里添加键值对
int[]num={4,5,6};
foreach (var n in ht) //遍历哈希表ht,结果如下图
{
Console.WriteLine(n);
}
foreach (var n in num) //遍历数组num
{
Console.WriteLine(n);
}
为什么foreach (var n in num) 可以直接让n获得数组num的元素?
而foreach (var n in ht)却没能让n获得哈希表ht的元素呢? 展开
ht.Add(1, "a"); //往ht里添加键值对
int[]num={4,5,6};
foreach (var n in ht) //遍历哈希表ht,结果如下图
{
Console.WriteLine(n);
}
foreach (var n in num) //遍历数组num
{
Console.WriteLine(n);
}
为什么foreach (var n in num) 可以直接让n获得数组num的元素?
而foreach (var n in ht)却没能让n获得哈希表ht的元素呢? 展开
3个回答
展开全部
因为NUM是一位数组,遍历的时候可以直接取到对应的值
Hashtable 是键值对,遍历的的时候娶到的是其中某一对键值
Hashtable ht = new Hashtable();
foreach (DictionaryEntry dic in ht)
{
Console.WriteLine(dic.Key + "--" + dic.Value);
}
追问
DictionaryEntry是返回此类型的实例,那它可以遍历返回某个类的对象实例吗,我刚才试写了个类Student,然后在主函数里写 Student类数组。但遍历错误
Student[] stu = { s1,s2}; //Student类型的数组
foreach (DictionaryEntry n in stu) //这里报错
{ }
追答
foreach遍历函数,in 后边的对象的集合,那么in前边就应该是对应的对象,有对象要调用就应该实例化一个,因此这里面就是这样写的 foreach(对象 实例名 in 对象集合)
展开全部
Hashtable遍历的时候,是一个对象,
foreach (DictionaryEntry n in ht) //遍历哈希表ht,结果如下图
{
n.Key
n.Value
}
foreach (DictionaryEntry n in ht) //遍历哈希表ht,结果如下图
{
n.Key
n.Value
}
更多追问追答
追问
我搜索看到DictionaryEntry是返回返回此类型的实例,那它可以遍历返回某个类的对象实例吗,我刚才试写了个类Student,然后在主函数里写 Student类数组。遍历错误
Student[] stu = { s1,s2}; //Student类型的数组
foreach (DictionaryEntry n in stu) //这里报错
{ }
追答
foreach (Student n in stu)
看你遍历对象是什么类型的,如果HashTable,就是DictionaryEntry
是Student[],就是Student ,其他对象就灵活处理
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
foreach取的东西是正确的,但是哈希表里面的结果不是数字也不是字符而是一个键值对,你直接用Console.WriteLine(n);是打印不出来的。
要想打印出结果必须把他转换成哈希表值的对象,然后找出其中的value。
要想打印出结果必须把他转换成哈希表值的对象,然后找出其中的value。
追问
foreach可以遍历 某个类的所有实例 吗,可以的话怎么写?
追答
“Student[] stu = { s1,s2}; //Student类型的数组
foreach (DictionaryEntry n in stu) //这里报错
{ }”
你完全没有理解foreach的使用方法,你的数组里面是什么类,这里就要写什么类。foreach (Student n in stu) {} 用自然语言来读就是“对stu里面的每一个student进行遍历”
之前那个DictionaryEntry是Dictionary(c#里用哈希表实现)里面一个键值对的对象,和你这个完全没有关系。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询