Обращение через индекс Dictionary или IndexOf, что быстрее / производительнее? - C#

Узнай цену своей работы

Формулировка задачи:

Смотрите есть строка:
string dic = "abcdefghijklmnopqrstuvwxyz";
мне приходит символ (

char

) и мне надо выяснить положение этого символа в строке, у меня есть 2 варианта, первое искать при помощи

IndexOf

:
int pos = dic.IndexOf(MyChar);
или есть второй вариант, изначально dic разбить на список Dictionary<char, int>, короче так:
Dictionary<char, int> collection = new Dictionary<char, int>();
for (int i = 0; i < dic.Length; i++) collection.Add(dic[i], i);
этот collection будет сохранен как свойство, т.е. на надо будет каждый раз повторять эту "конвертацию". а потом просто:
int pos = collection[MyChar];
как будет быстрее и производительнее? Работы будет много, по этому это важно.

PS

я может туплю, просто в последнее время занимался РНР, а там есть способ так обращаться и оно работает быстрее чем поиск по массиву, вот и спрашиваю.
// проверка присутствует ли в массиве значение
if ( isset($array['page1']) ) {
    // ....
}
вроде как когда я через индекс обращаюсь, там все равно поиск осуществляется перебором.

Решение задачи: «Обращение через индекс Dictionary или IndexOf, что быстрее / производительнее?»

textual
Листинг программы
static string GetNew(string Old, string dic = "0123456789") // 0123456789abcdefghijklmnopqrstuvwxyz
{
    char[] temp = Old.ToCharArray();
    for (int i = temp.Length - 1; i >= 0; i--)
    {
        if (temp[i] == dic[dic.Length - 1])
        {
            temp[i] = dic[0];
            continue;
        }
        else
        {
            int now = dic.IndexOf(temp[i]);
            temp[i] = dic[now + 1];
            break;
        }
    }
    return new string(temp);
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.867 из 5
Похожие ответы