Использование коллекции с идентификатором ключа в виде пользовательского типа - C#
Формулировка задачи:
Здравствуйте. Очень неудобно обращаться к вам с такой просьбой, но на данный момент у меня нет другого выхода.
Учу C#, но без практики все время понемногу забываю все прочитанное. Решил попробовать устроиться в компанию на стажировку. Там дали задание.
Я не прошу вас его сделать для меня!!! Я прошу просто дать направление, в котором копать. Что нужно использовать, про что нужно почитать и как лучше реализовать. Прошу помочь, если для вас это не будет слишком сложным
Спроектируйте и реализуйте класс-коллекцию для хранения элементов, имеющих уникальный составной ключ [Id, Name] (Id и Name – компоненты ключа, могу быть произвольного типа). Вы можете использовать любую встроенную коллекцию .NET Framework.
Предоставьте необходимые с вашей точки зрения методы для этой коллекции, а так же методы для быстрого получения элементов по их Id ИЛИ Name.
Программа должна содержать пример использования коллекции с идентификатором ключа в виде пользовательского типа (т.е. Id в ключе – UserType, объекты UserType должны сравниваться по значению). *Вот этот абзац вообще не понимаю*
Дополнительно: Создайте потокобезопасную реализацию этой коллекции (не использовать коллекции из пространства имён System.Collections.Concurrent).
Заранее спасибо. Я пока еще новичок в программировании, поэтому прошу тапками не закидывать если что не так =)
Решение задачи: «Использование коллекции с идентификатором ключа в виде пользовательского типа»
textual
Листинг программы
public class ItemsCollection : CollectionBase
{
#region Constructor
public ItemsCollection()
{ }
#endregion
#region this[int indx]
public TabItem this[int indx]
{
get
{
if (indx < 0 || indx >= List.Count)
{
return null;
}
return (TabItem)List[indx];
}
set
{
List[indx] = value;
}
}
#endregion
#region Add, AddRange
public virtual void Add(TabItem itm)
{
List.Add(itm);
}
public virtual void AddRange(TabItem[] itms)
{
for (int i = 0; i < itms.Length; i++)
{
List.Add(itms[i]);
}
}
#endregion
#region Remove
public virtual void Remove(TabItem item)
{
List.Remove(item);
}
#endregion
#region IndexOf
public virtual int IndexOf(TabItem item)
{
return List.IndexOf(item);
}
#endregion
#region Contains
public virtual bool Contains(TabItem item)
{
return List.Contains(item);
}
#endregion
}