Что относительно того, чтобы выполнить его http сервер?
Это кажется сумасшедшим, но рабочий простой веб-сервер для управления Вашим сервером требует всего нескольких строк с помощью web.py
, можно также рассмотреть создание канала Unix.
Это случайно, хотя и предсказуемо. Вы абсолютно не должны на это полагаться. Обычно это будет случиться в простых ситуациях, но если вы начнете удалять элементы и заменять их чем-либо, либо с тем же хеш-кодом, либо просто попадая в ту же корзину, этот элемент займет позицию оригинала, несмотря на были добавлены позже, чем другие.
Это относительно сложно воспроизвести, но мне удалось это сделать некоторое время назад для другого вопроса :
using System;
using System.Collections.Generic;
class Test
{
static void Main(string[] args)
{
var dict = new Dictionary<int, int>();
dict.Add(0, 0);
dict.Add(1, 1);
dict.Add(2, 2);
dict.Remove(0);
dict.Add(10, 10);
foreach (var entry in dict)
{
Console.WriteLine(entry.Key);
}
}
}
Результаты показывают 10, 1, 2, а не 1 , 2, 10.
Обратите внимание, что даже если похоже, что текущее поведение всегда будет давать элементы в порядке вставки, если вы не выполняете никаких удалений, нет гарантии, что будущие реализации будут делать то же самое. ...
Из MSDN :
В целях перечисления каждый элемент в словаре рассматривается как
KeyValuePair <(Of <(TKey, TValue>)>)
структура, представляющая значение и его ключ. Порядок, в котором возвращаются элементы, не определен .
[Курсив мой]
Если вы хотите перебрать словарь в фиксированном порядке, вы можете попробовать OrderedDictionary
По замыслу Dictionary
не является упорядоченной структурой, поскольку он предназначен для использования в основном для доступа на основе ключей.
Если вам необходимо получить элементы в определенном порядке, вам следует взглянуть на Sorted Dictionary
, который принимает Comparer
который будет использоваться для сортировки ключей в Sorted Dictionary
.
Я так не думаю, словарь не поддерживает внутреннее упорядочение элементов внутри него. Если вам также необходимо сохранить порядок, используйте дополнительную структуру данных (массив или список) вместе со словарем.
Я считаю, что перечисление Dictionary
вернет ключи в том же порядке, в котором они были вставлены , если все ключи хешируются с одинаковым значением . Это связано с тем, что реализация Dictionary
использует хэш-код ключевого объекта для вставки пар ключ / значение в сегменты, а значения (обычно) сохраняются в сегментах в том порядке, в котором они вставлен. Если вы постоянно наблюдаете такое поведение с вашими определяемыми пользователем объектами, возможно, вы не (правильно) переопределили метод GetHashCode ()
?