değerleri almak bir sınıf var:kullanarak özel nesne gibi kilit Sözlük ama nesne özelliği
public class Foo
{
public string Name { get; set; }
public double Value { get; set; }
public override string ToString()
{
return Name;
}
}
Ve anahtar Foo nesnesi olan bir sözlük oluşturmak gerekir. Bunun gibi:
Foo foo1 = new Foo { Name = "Foo1", Value = 2.2 };
Foo foo2 = new Foo { Name = "Foo2", Value = 3.6 };
Dictionary<Foo, int> dic = new Dictionary<Foo, int>();
dic.Add(foo1, 1234);
dic.Add(foo2, 2345);
Ve şimdi Foo.Name özelliğini anahtar olarak geçirerek sözlükten değerler almak istiyorum. Bunun gibi:
int i=dic["Foo1"];
// i==1234
i = dic["Foo2"];
// i==2345
Mümkün mü? Veya Foo'nun nesnesini anahtar olarak ve Equides yöntemini geçersiz kılmak için tek yol mu?
Anahtar olarak "Foo" ile bir değere bakmak için * ihtiyacınız var mı? Bunun yerine bir Sözlük 'kullanabilir misiniz? –
Bu işe yaramaz. Sorun olarak, anahtar olarak Foo sınıfının bir örneğini kullandınız. Değeri almak için aynı örneği tekrar anahtar olarak kullanmanız gerekir. foo1.ToString() öğesini anahtar olarak kaydedin ve örneği dikte ettirmeyin; böylece dic ["Foo1"]; FYI bu bir sözlük –