dictionary遍历,能不能不用foreach ?

qingtianzhuren 2010-09-15 03:00:36
foreach (KeyValuePair<string, string> a in data)
{
}
因为涉及到修改,用FOR行不行?怎么用呢
...全文
1552 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
newlive005 2011-06-04
  • 打赏
  • 举报
回复
看看我经过测试的无上正解

Dictionary<int, string> dict = new Dictionary<int, string>();
dict.Add(1, "helo");
dict.Add(2, "helo");
int[] keys = new int[dict.Count];

dict.Keys.CopyTo(keys, 0);
foreach (int key in keys)
{
Response.Write("key"+key.ToString()+":" + key.ToString());
dict.Remove(key);
// Response.Write("key" + key.ToString() + ":" + dict[key]);
}


newlive005 2011-06-04
  • 打赏
  • 举报
回复
连数星 带数勋章的人 都乱建议看来真的是无知,不知道星是怎么得来的,想当然,到底试过没有自己
哎,技术界呀的人,再说一一猪头们,这样做到底行不行你息试一下再说不要想当然

Dictionary<string, string> a = new Dictionary<string,string>(); foreach( string key in a.Keys) { a[key] = ... }
newlive005 2011-06-04
  • 打赏
  • 举报
回复
同情楼主,回答的全是一群猪,还自为为是高手,哎,连基本常识都没有 要解决在字典中遍历就必须要弄成数组,没有办法的,先把keys取出来做一个数组,再用数组去遍历
qingtianzhuren 2010-09-16
  • 打赏
  • 举报
回复
在FOREACH里不能删除,但可以记录下想要删除的KEY,然后保存到数组当中,FOR遍历数组,按KEY挨个删除DICTIONARY,我是这样做的。
宝_爸 2010-09-15
  • 打赏
  • 举报
回复
dictionary是key value对。
如果只是想修改value的话
可以使用


Dictionary<string, string> a = new Dictionary<string,string>();
foreach( string key in a.Keys)
{
a[key] = ...
}


如果想删除 使用Remove.
kensouterry 2010-09-15
  • 打赏
  • 举报
回复
不知道像这样把键值对转化出来满足你的要求不?


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
class Program
{
static void Main()
{
//初始化dictionary对象
Dictionary<string, string> dict1 = new Dictionary<string, string>();
dict1.Add("LeftValue", "1");

List<DictValue> listDict = new List<DictValue>();


Dictionary<string, string>.KeyCollection kc = dict1.Keys;
Dictionary<string, string>.ValueCollection vc = dict1.Values;
foreach(string k1 in kc)
foreach (string v1 in vc)
{
DictValue dv = new DictValue();
dv.key = k1;
dv.value = v1;
listDict.Add(dv);
}
// 接下来,使用映射对象 listDict进行遍历

for (int i = 0; i < listDict.Count; i++)
{
Console.WriteLine("key:{0},value:{1}", listDict[i].key, listDict[i].value);
}

Console.ReadLine();
}
}

class DictValue
{
public string key="";
public string value="";
}

}
akey307 2010-09-15
  • 打赏
  • 举报
回复
你既然明知道不支持索引,为什么还问能不能用for?

再说为什么涉及到修改就一定要用for呢? 能不能说明一下?

如果一定要用for的话,是不是说明用dictionay是不合适的呢?
qingtianzhuren 2010-09-15
  • 打赏
  • 举报
回复
楼上两位,看清是: dictionary,不支持索引
dts_fan 2010-09-15
  • 打赏
  • 举报
回复
en for (int i = 0; i < data.GetLength(); i++)
{
KeyValuePair<string, string> a = data[i];
}
threenewbee 2010-09-15
  • 打赏
  • 举报
回复
for (int i = 0; i < data.GetLength(); i++)
{
KeyValuePair<string, string> a = data[i];
}
内容概要:本文围绕“新型电力系统下多分布式电源接入配电网承载力评估方法”的研究,系统性地介绍了基于Matlab的仿真建模与代码实现方案,旨在评估高比例分布式电源(如光伏、风电等)接入背景下配电网的接纳能力。研究融合了智能优化算法(如蜣螂优化、灰狼优化、遗传算法)、多目标优化、鲁棒优化及双层优化模型,结合潮流计算、稳定性分析与故障仿真,构建了完整的承载力评估体系。文档不仅提供核心算法实现,还拓展至微电网调度、储能配置、电氢耦合系统、电动汽车协同等前沿方向,强调“复现+创新”相结合的科研路径,助力研究者快速掌握高水平论文复现技巧并激发原创思路。; 适合人群:具备电力系统、自动化或相关专业背景,熟悉Matlab/Simulink仿真环境,正在从事科研或工程应用的研究生及初级科研人员(工作1-3年);; 使用场景及目标:①复现高水平期刊中关于配电网承载力的优化模型;②开展高比例可再生能源接入下的配电网规划与运行研究;③学习并应用智能优化算法解决复杂电力系统问题;④获取完整科研资源包以加速课题进展与论文撰写; 阅读建议:建议读者关注公众号“荔枝科研社”获取网盘资源,下载全套代码与模型文件,按照文档结构循序渐进学习,重点理解算法设计逻辑与仿真建模细节,结合所提供的复现案例深化对优化模型与工程应用场景的理解,提升科研效率与创新能力。

111,129

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧