Я пытаюсь изучить и практиковать принципы ООП, и мне нужна помощь, чтобы привести меня к горбу. У меня есть следующий код:Консолидация аналогичных методов в один метод для уменьшения дублирования
using System.Collections.Generic;
namespace Test
{
class Program
{
static void Main()
{
Dictionary<string, string> dictionary = new Dictionary<string, string>();
dictionary.Add("cat", "one");
dictionary.Add("dog", "two");
dictionary.Add("llama", "three");
dictionary.Add("iguana", "four");
var test1 = GetKVP(dictionary, "llama");
var test2 = GetValue(dictionary, "llama");
var test3 = GetPosition(dictionary, "llama");
}
static KeyValuePair<string, string> GetKVP(Dictionary<string, string> dict, string key_to_find)
{
foreach (KeyValuePair<string, string> kvp in dict)
{
if (kvp.Key == key_to_find)
{return kvp;}
}
return new KeyValuePair<string, string>();
}
static string GetValue(Dictionary<string, string> dict, string key_to_find)
{
foreach (KeyValuePair<string, string> kvp in dict)
{
if (kvp.Key == key_to_find)
{return kvp.Value;}
}
return string.Empty;
}
static int GetPosition(Dictionary<string, string> dict, string key_to_find)
{
int counter = 0;
foreach (KeyValuePair<string, string> kvp in dict)
{
if (kvp.Key == key_to_find)
{return counter;}
counter += 1;
}
return -1;
}
}
}
То, что я пытаюсь сделать, это закрепить кодовый так, что я могу иметь один метод, который возвращает другой тип данных без дублирования кода. Пожалуйста, не комментируйте тот факт, что есть несколько более эффективных способов поиска словаря, я знаю, что это не идеально. Я просто издевался над некоторыми данными и методами, которые можно использовать в качестве примера. Для жизни я не могу представить, как реализовать что-то подобное.
Словари не упорядочены, поэтому GetPosition не будет возвращать последовательные результаты, за исключением совпадения. – Bringer128
Это просто пример «Пожалуйста, не комментируйте тот факт, что есть несколько более эффективных способов поиска словаря, я знаю, что это не идеально. Я просто издевался над некоторыми данными и методами, которые можно использовать в качестве примера . ".. Мне все равно, что он возвращает, мне просто нужен метод, который что-то возвращает. – stumped221
Этот код для меня не имеет никакого смысла. В дополнение к точке в предыдущем комментарии ('GetPosition()' - бессмысленный метод), в чем смысл 'GetKVP()'? Когда всегда полезно иметь пустой экземпляр «KeyValuePair» (даже если вы исправили код, чтобы он компилировался ... для этого типа нет конструктора без параметров). Что вы на самом деле пытаетесь консолидировать здесь? Вы просто хотите сделать этот код _generic_? –