C#中修改字典值数组内指定元素的方法
解决Dictionary<int, string[]>中数组元素修改的问题
这个问题我之前也碰到过,先说说你原来的代码为什么会报错:
dict[0].ElementAt(0) = "Something Different";
ElementAt(0)是LINQ方法,它返回的是数组对应位置元素的值副本,而不是指向该元素的可修改引用。所以你没法直接给这个返回值赋值,编译器自然会提示“左侧不是变量、属性或索引器”。
正确的实现方式
因为dict[0]返回的是string[]数组的引用(数组属于引用类型),所以你可以直接用数组的索引器来修改指定位置的元素,代码非常简洁:
dict[0][0] = "Something Different";
完整示例代码
给你一个完整的测试例子,方便你理解:
// 初始化字典 var dict = new Dictionary<int, string[]> { { 0, new string[] { "Original Value", "Second Element" } }, { 1, new string[] { "Another Array", "Another Element" } } }; // 修改索引0的数组中第0个元素 dict[0][0] = "Something Different"; // 验证结果 Console.WriteLine(dict[0][0]); // 输出: Something Different Console.WriteLine(dict[0][1]); // 输出: Second Element(其他元素保持不变)
补充注意事项
- 要确保你要修改的
key(比如示例里的0)确实存在于字典中,否则会抛出KeyNotFoundException。如果不确定key是否存在,可以先用dict.TryGetValue(0, out var array)安全获取数组引用后再修改。 - 同时要保证数组的索引(比如示例里的
0)在数组的有效范围内,不然会抛出IndexOutOfRangeException。
内容的提问来源于stack exchange,提问作者Brannon Penrod
相关产品推荐
相关产品推荐

