回 帖 发 新 帖 刷新版面

主题:关于Hashtable的问题,请教!!!!!

using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;
class Test
{
    public static void Main()
    {
        Hashtable hs = new Hashtable();
        hs.Add("a1", new Xs("xieshan", 13));
        hs.Add("a2", new Xs("zhanglei", 12));
         Console.WriteLine(hs["a1"]);//为什么不能通过健来取得对应的对象,而取得的是类名Xs,通过什么方法可以取得对象,就是为什么hs["a1"].name中name点不出来
     
    }
    
}
class Xs
{
    private string name=null;
    private int age=0;
    public Xs(string name,int age)
    {
        this.age=age;
        this.name=name;
    }
    public string Name
    {
        get
        {
            return name;
        }
    }
    public int Age
    {
        get
        {
            return age;
        }
    }
}
如果hashtable键值对,值是下面的类型则可以显示出来
  Hashtable hs = new Hashtable();
        hs.Add("a1","bbb");
        hs.Add("a2","aaaa");
        Console.WriteLine(hs["a1"]);
      显示的是bbb
搞不清楚为什么添加string对象和一个自定义的对象会有这样的区别,请教,请知道的说哈,谢谢.............

回复列表 (共4个回复)

沙发

你要先创建一个对象然后才能调用它去实现啊

板凳

能够具体点吗???,我想取得a1这个键对应的值里面的name怎么做????

3 楼

Console.WriteLine(((Xs)hs["a1"]).name);

WriteLine对于类型的处理是调用ToString()方法,你没有手动重载ToString(),自然只输出类名。

4 楼

多谢指点.............

我来回复

您尚未登录,请登录后再回复。点此登录或注册