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的元素呢?
展开
 我来答
332150481
2014-11-05 · 超过44用户采纳过TA的回答
知道小有建树答主
回答量:112
采纳率:0%
帮助的人:58.7万
展开全部

因为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  对象集合)
wuxd7
2014-11-05 · TA获得超过323个赞
知道小有建树答主
回答量:452
采纳率:100%
帮助的人:284万
展开全部
Hashtable遍历的时候,是一个对象,
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 ,其他对象就灵活处理
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
coldwraith
2014-11-05 · TA获得超过139个赞
知道小有建树答主
回答量:110
采纳率:0%
帮助的人:125万
展开全部
foreach取的东西是正确的,但是哈希表里面的结果不是数字也不是字符而是一个键值对,你直接用Console.WriteLine(n);是打印不出来的。
要想打印出结果必须把他转换成哈希表值的对象,然后找出其中的value。
追问
foreach可以遍历 某个类的所有实例 吗,可以的话怎么写?
追答
“Student[] stu = { s1,s2};  //Student类型的数组
foreach (DictionaryEntry n in stu) //这里报错
{ }”

你完全没有理解foreach的使用方法,你的数组里面是什么类,这里就要写什么类。foreach (Student n in stu) {} 用自然语言来读就是“对stu里面的每一个student进行遍历”

之前那个DictionaryEntry是Dictionary(c#里用哈希表实现)里面一个键值对的对象,和你这个完全没有关系。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
?>

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式