在散列表中,如何通过其键获取对象值?

时间:2013-12-19 23:06:42

标签: c# hashtable

我想要做的是获取给定哈希表中对象的值,这要归功于它的关键。 这是我的代码:

Hashtable quotidiani = new Hashtable();

Giornale corriere = new Giornale();
corriere.nome("Corriere della Sera");
corriere.direttore("Ferruccio de Bortoli");
corriere.anno("1876");
quotidiani.Add("corriere", corriere);

Giornale repubblica = new Giornale();
repubblica.nome("la Repubblica");
repubblica.direttore("Ezio Mauro");
repubblica.anno("1976");
quotidiani.Add("repubblica", repubblica);

Giornale ilFatto = new Giornale();
ilFatto.nome("Il Fatto Quotidiano");
ilFatto.direttore("Antonio Padellaro");
ilFatto.anno("2009");
quotidiani.Add("ilfatto", ilFatto);

/*IDictionaryEnumerator enumeratore = quotidiani.GetEnumerator();

Console.WriteLine("Di quale quotidiano vuoi visionare le informazioni? (scrivi la chiave): ");
string answer = Console.ReadLine();
while (enumeratore.MoveNext()) { 

    if (quotidiani.ContainsKey(answer))
{
    Giornale grl = (Giornale)enumeratore.Value;
    Console.WriteLine("Nome: {0}, Direttore: {1}, Anno di fondazione: {2}", grl.getNome(), grl.getDirettore(), grl.getAnno());
    Console.WriteLine("la chiave è presente");
    Console.WriteLine(quotidiani[answer]);
    break;
}
else {
    Console.WriteLine("Chiave non esistente");
    break;
}
class Giornale {
    string nomeQuotidiano = "";
    string dirQuotidiano = "";
    string annoQuotidiano = "";

    // Funzioni di assegnazione:
    public void nome(string nQuotidiano) {
        this.nomeQuotidiano = nQuotidiano;
    }

    public void direttore(string dQuotidiano) {
        this.dirQuotidiano = dQuotidiano;
    }

    public void anno(string aQuotidiano){
        this.annoQuotidiano = aQuotidiano;
    }

    // Funzioni di richiamo:
    public string getNome() {
        return this.nomeQuotidiano;
    }

    public string getDirettore() {
        return this.dirQuotidiano;
    }

    public string getAnno() {
        return this.annoQuotidiano;
    }
}

如果对象和东西的名称是意大利语,我很抱歉,我不认为我不会被卡住。

基本上我被困在注释代码块中:我想要做的是在哈希表中查找其3个对象中的一个并使用其键获取其元素。

因此,我想放置密钥(使用readline方法)并找到与密钥关联的对象的元素。我怎样才能做到这一点?可能解决方案很简单,但我现在看不到它。

2 个答案:

答案 0 :(得分:4)

 Hashtable quotidiani = new Hashtable();
 var value = quotidiani["key"];

可以找到有关哈希表的更多信息here。 Hashtables在.NET中是一种旧式的集合类型,您可能需要考虑使用Dictionaries

答案 1 :(得分:-1)

我解决了!执行我的意思的代码块是:

Console.WriteLine("Di quale giornale vuoi le informazioni? (inserisci la chiave)");
        var key = Console.ReadLine();

        var value = quotidiani[key];

        Giornale grl = (Giornale)value;



        Console.WriteLine("Nome: {0}, Direttore: {1}, Anno di fondazione: {2}",grl.getNome(), grl.getDirettore(), grl.getAnno());

谢谢大家的提示:P