Нельзя добавить элемент в dictionary
с помощью того же ключа. Я думаю, что вы используете неправильную структуру данных. Я полагаю, вам, возможно, придется использовать list<>
вместо этого. Как это:
var lookup=new List<KeyValuePair<string,Bitmap>>();
lookup.Add(new KeyValuePair<string,Bitmap>("A", new Bitmap(@"C:\08\letters\1\a1.bmp", true)));
lookup.Add(new KeyValuePair<string,Bitmap>("A", new Bitmap(@"C:\08\letters\1\a2.bmp", true)));
lookup.Add(new KeyValuePair<string,Bitmap>("a", new Bitmap(@"C:\08\letters\1\aa1.bmp", true)));
lookup.Add(new KeyValuePair<string,Bitmap>("B", new Bitmap(@"C:\08\letters\1\b1.bmp", true)));
Вы можете сделать это вместо этого. Без выполнения ToList()
:
bitmap b1 = target[j].Value; //grab value
string key = target[j].Key; //grab key
Редактировать
Но если вы делаете ToList()
на Dictionary
, тогда вы упускаете момент, когда на первом месте стоит Dictionary
. Потому что тогда вы все равно получаете доступ к Dictionary
пути list
. Я также вижу проблему при выполнении ToList()
на Dictionary
, потому что сортировка в Dictionary
выполняется не так, как вы их вставляете, а по хешу. Это означает, что вы не можете быть уверены, что индекс 1 является индексом 1. Вы также должны учитывать, что операция add
на Dictionary
не так эффективна, как add
на List
. Бог вещей с помощью словаря в том, что поиск быстрый. Но это вы не используете с вашим текущим решением.
Так что я вижу два пути. Приведенный выше или убедитесь, что ключи уникальны, и найдите его с помощью поиска в Dictionary
. Как это:
Dictionary<string, Bitmap> lookup = new Dictionary<string, Bitmap>();
lookup.Add("A", new Bitmap(@"C:\08\letters\1\a1.bmp", true));
lookup.Add("B", new Bitmap(@"C:\08\letters\1\a2.bmp", true));
lookup.Add("C", new Bitmap(@"C:\08\letters\1\aa1.bmp", true));
lookup.Add("D", new Bitmap(@"C:\08\letters\1\b1.bmp", true));
Тогда вы можете получить Bitmap
вот так:
Bitmap bm;
if(lookup.TryGetValue("A",out bm))
{
//Do something
}
Или, если вы знаете, что ключ присутствует в Dictionary
, вы можете сделать так:
Bitmap bm;
bm= lookup["A"];