Как указывалось в комментариях @ Корак , вы можете просто использовать KeyValuePair<TKey,TValue> Struct
вместо создания собственного MyKeyValuePair
класса:
var list = dict
.Select(x => new KeyValuePair<string, string>(x.Key, x.Value))
.ToList();
Или еще лучше:
var list = new List<KeyValuePair<string, string>>(dict)
Еще лучше:
var list = dict.ToList();
Второй и третий подходы работают, потому что Dictionary<TKey,TValue>
реализует IEnumerable<KeyValuePair<TKey,TValue>>()
, который является конструктором List<KeyValuePair<TKey,TValue>>()
. Это также означает, что он может использовать метод расширения ToList
.
Структуры также копируются по значению , а не по , ссылка . Это также указано в MSDN :
Типы структуры имеют семантику значений. То есть переменная типа структуры содержит экземпляр типа. По умолчанию значения переменных копируются при присваивании, передавая аргумент методу и возвращая результат метода. В случае переменной типа структуры, экземпляр типа копируется. Для получения дополнительной информации см. Типы значений .