如何从Dictionary中读取信息并赋值到文本框控件
从C# Dictionary读取内容写入文本框的解决方法
你原本的写法存在两处错误:
Dictionary<int, string>的Values属性返回的是值集合类型,不支持直接通过索引访问,cities.Values[1]会直接触发编译错误- Dictionary按键值对存储数据,你插入的键为
10,要匹配键取值而不是按插入顺序的索引取值,且Dictionary本身不保证存储顺序和插入顺序一致
正确实现方式
1. 确定键一定存在时,直接按键取值
这种写法最简单,如果你确认要访问的键10一定在Dictionary中存在,直接用键作为索引器参数取值即可:
var cities = new Dictionary<int, string> { { 10, "New York" }, }; // 直接通过Key 10取对应值 textBox1.Text = cities[10];
2. 不确定键是否存在时,用TryGetValue避免异常
如果键有可能不存在,用TryGetValue方法可以避免抛出KeyNotFoundException,兼容性更好:
var cities = new Dictionary<int, string> { { 10, "New York" }, }; if (cities.TryGetValue(10, out string targetCity)) { // 键存在时赋值给文本框 textBox1.Text = targetCity; } else { // 键不存在时可自定义默认展示内容 textBox1.Text = "无匹配城市信息"; }
3. 确实需要按顺序取值的场景
如果你业务上确实需要按存储顺序取第N个值,需要先把Values转换为列表或数组再按索引访问:
var cities = new Dictionary<int, string> { { 10, "New York" }, { 20, "London" } }; // 把值集合转成列表后再按索引访问 var cityList = cities.Values.ToList(); // 索引0对应第一个元素"New York",索引1对应第二个元素"London" if (cityList.Count > 1) { textBox1.Text = cityList[1]; }
内容的提问来源于stack exchange,提问作者Cesar Goulart
相关产品推荐
相关产品推荐

