You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.10 12:09:03