В HashTable не отображается, то что добавил C#
Я не могу понять, почему у меня после добавления в ХТ (ХешТаблица), она не сохраняет предыдущие значение?
Вот код добавления:
public void Insert(string key, string value)
{
if (string.IsNullOrEmpty(key))
{
throw new ArgumentNullException(nameof(key));
}
if (key.Length > _maxSize)
{
throw new ArgumentException($"Максимальная длинна ключа составляет {_maxSize} символов.", nameof(key));
}
if (string.IsNullOrEmpty(value))
{
throw new ArgumentNullException(nameof(value));
}
var item = new Item(key, value);
var hash = GetHash(item.Key);
List<Item> hashTableItem = null;
if (_items.ContainsKey(hash))
{
hashTableItem = _items[hash];
var oldElementWithKey = hashTableItem.SingleOrDefault(i => i.Key == item.Key);
if (oldElementWithKey != null)
{
throw new ArgumentException($"Хеш-таблица уже содержит элемент с ключом {key}. Ключ должен быть уникален.", nameof(key));
}
_items[hash].Add(item);
}
else
{
hashTableItem = new List<Item>{ item };
_items.Add(hash, hashTableItem);
}
}
Делаю запрос так:
var hashTable = new HashTable2();
ShowHashTable(hashTable, "Создаем таблицу.");
Console.WriteLine("Что вы хотите сделать? |1. Добавить| |2. Удалить| |3. Найти|");
int answer;
Console.WriteLine("Введите номер команды");
while (!int.TryParse(Console.ReadLine(), out answer))
{
Console.WriteLine("Ошибка ввода! Введите номер команды!");
}
if (answer == 1)
{
Console.WriteLine("Чтобы добавить введите индификатор");
var ind = Console.ReadLine();
Console.WriteLine("Введите название");
var nazv = Console.ReadLine();
try
{
hashTable.Insert(ind, nazv);
Console.WriteLine("Хеш добавлен");
ShowHashTable(hashTable, "Создаем таблицу.");
Simen();
}
catch (Exception eks)
{
Console.WriteLine(eks);
Simen();
}
}
После выполнения кода значения добавляются. Но когда добавляю еще одно, она не находится. Будто исчезает из массива...
Ответы (1 шт):
Автор решения: Vasya Milovidov
→ Ссылка
Хотел написать в комментарии но получилось бы непонятно, вам нужен бесконечный цикл где внутри будет блок управления вашим основным пользовательским интерфейсом с возможностью выхода.
var hashTable = new HashTable2();
ShowHashTable(hashTable, "Создаем таблицу.");
while(true){
Console.WriteLine("Что вы хотите сделать? |1. Добавить| |2. Удалить| |3. Найти| 4. Выйти");
int answer;
Console.WriteLine("Введите номер команды");
while (!int.TryParse(Console.ReadLine(), out answer))
{
Console.WriteLine("Ошибка ввода! Введите номер команды!");
}
if(answer == 4){
break;
}
if (answer == 1)
{
Console.WriteLine("Чтобы добавить введите индификатор");
var ind = Console.ReadLine();
Console.WriteLine("Введите название");
var nazv = Console.ReadLine();
try
{
hashTable.Insert(ind, nazv);
Console.WriteLine("Хеш добавлен");
ShowHashTable(hashTable, "Создаем таблицу.");
Simen();
}
catch (Exception eks)
{
Console.WriteLine(eks);
Simen();
}
}
}