Связь
ключей и
значений это
hash table или hash map (общее название для любого языка программирования).
В C#
Dictionary<TKey, TValue> это реализация
hash table или
hash map
C#
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
class MyKey
{
public string Name { get; set; }
public int Age { get; set; }
public override bool Equals(Object obj)
{
MyKey key2 = obj as MyKey;
return (Name.CompareTo(key2.Name) == 0 && Age == key2.Age);
}
public override int GetHashCode()
{
return Name.Length * 10 + 3;
}
}
class Program
{
static void Main(string[] args)
{
Dictionary<MyKey, float> myDict = new Dictionary<MyKey, float>();
// add item
MyKey myKey1 = new MyKey() { Name = "Вася", Age = 45 };
myDict.Add(myKey1, 60.3f);
// add item
MyKey myKey2 = new MyKey() { Name = "Евгений", Age = 36 };
myDict.Add(myKey2, 64.2f);
// add item
MyKey myKey3 = new MyKey() { Name = "Петя", Age = 45 };
myDict.Add(myKey3, 71.6f);
float weight;
MyKey myFind;
// find 1
myFind = new MyKey() { Name = "Вася", Age = 45 };
if (myDict.TryGetValue(myFind, out weight))
{
Console.WriteLine("{0} {1} {2}", myFind.Name, myFind.Age, weight);
// на экране увидим
// Вася 45 60,3
}
// find 2
myFind = new MyKey() { Name = "Петя", Age = 45 };
if (myDict.TryGetValue(myFind, out weight))
{
Console.WriteLine("{0} {1} {2}", myFind.Name, myFind.Age, weight);
// на экране увидим
// Петя 45 71,6
}
}
}
}