匿名方法是.NET 3.5之后的一个好东东,很多人使用,但是我在最近的工作当中发现了一个问题. 请专家解答

             //list里存放10个数字
List<int> list = new List<int>();
for (int i = ; i < ; i++)
{
list.Add(i);
} //10个数字,分成10组,其实每组就一个元素,每组的元素是不相同的
Dictionary<int, List<int>> dict = new Dictionary<int, List<int>>();
for (int i = ; i < ; i++)
{
int k = i % ;
if (dict.ContainsKey(k))
{
dict[k].Add(i);
}
else
{
dict[k] = new List<int>();
dict[k].Add(i);
}
}

接下来,我们先采用非匿名方法,实现打印每个组里的元素,代码如下

             using (Dictionary<int, List<int>>.Enumerator enumerator = dict.GetEnumerator())
{
KeyValuePair<int, List<int>> keyValue;
while (enumerator.MoveNext())
{
keyValue = enumerator.Current; System.Threading.Thread thread = new System.Threading.Thread(Display);
thread.Start(keyValue.Value);
}
} public static void Display(object o)
{
List<int> list = o as List<int>;
foreach (var item in list)
{
Console.WriteLine(item.ToString());
}
}

输出的结果是:

0

1

2

3

4

5

6

7

8

9

没有问题!!! 一切OK

好,我们换一种方式为实现输出各组的元素,采用匿名委托的方式.

           using (Dictionary<int, List<int>>.Enumerator enumerator = dict.GetEnumerator())
{
KeyValuePair<int, List<int>> keyValue;
while (enumerator.MoveNext())
{
keyValue = enumerator.Current;
System.Threading.Thread thread = new System.Threading.Thread(delegate()
{
foreach (var item in keyValue.Value)
{
Console.WriteLine(item.ToString());
}
}
);
thread.Start();
}
}

采用上面的代码,输出的结果不定,而且会出现重复的数据,结果可能如下

3

3

3

4

4

4

5

5

7

9

请专家解答一下,我一直没有找到原因!

这个号是09年注册的,可是博文只写了几个,感谢大家的热情回复!

此题可以结了。请大家看回复之后,如果有补充的地方再回复!  

.NET 匿名方法的BUG,请专家解答的更多相关文章

  1. Oracle Cannot Update TOP N Issue, 请专家解答

    大家好 上周写了匿名方法一文,很多读者,很高兴,相信我们已经从大伙的回复中,对.NET又有了更深刻的认识. 好,现在说主题,各类数据库都有相应更新本表top n的方案.现在我一一举例 首先看表结构如下 ...

  2. 09.C#委托转换和匿名方法(五章5.1-5.4)

    今天将书中看的,自己想的写出来,供大家参考,不足之处请指正.进入正题. 在C#1中开发web form常常会遇到使用事件,为每个事件创建一个事件处理方法,在将方法赋予给事件中,会使用new Event ...

  3. 编写高质量代码改善C#程序的157个建议[为泛型指定初始值、使用委托声明、使用Lambda替代方法和匿名方法]

    前言 泛型并不是C#语言一开始就带有的特性,而是在FCL2.0之后实现的新功能.基于泛型,我们得以将类型参数化,以便更大范围地进行代码复用.同时,它减少了泛型类及泛型方法中的转型,确保了类型安全.委托 ...

  4. C# 匿名方法

    每次写博客,第一句话都是这样的:程序员很苦逼,除了会写程序,还得会写博客!当然,希望将来的一天,某位老板看到此博客,给你的程序员职工加点薪资吧!因为程序员的世界除了苦逼就是沉默.我眼中的程序员大多都不 ...

  5. 初始化JQuery方法与(function(){})(para)匿名方法介绍

    一.初始化JQuery对象 DOM加载完成时运行代码 1.$(document).ready(function(){ 全写 // 在这里写你的代码... }); 2.jQuery(function() ...

  6. 通过Func 委托理解委托和匿名方法及Lambda 表达式

    Func<T, TResult> 委托 封装一个具有一个参数并返回 TResult 参数指定的类型值的方法. 命名空间: System 程序集: mscorlib(在 mscorlib.d ...

  7. C# 委托、匿名方法、lambda简介

    在.NET中,委托,匿名方法和Lambda表达式很容易发生混淆.我想下面的代码能证实这点.下面哪一个First会被编译?哪一个会返回我们需要的结果?即Customer.ID=5.答案是6个First不 ...

  8. Delegate,Action,Func,匿名方法,匿名委托,事件 (转载)

    Delegate,Action,Func,匿名方法,匿名委托,事件 (转载) 一.委托Delegate 一般的方法(Method)中,我们的参数总是string,int,DateTime...这些基本 ...

  9. C# 委托、匿名方法、扩展方法

    一.委托的使用: 详细委托和事件解释请看另一篇:http://www.cnblogs.com/Liyuting/p/6760706.html 二.匿名方法 三.扩展方法

随机推荐

  1. CentOS防火墙中端口的开启和关闭

    1.开启端口(以80端口为例) 方法一: /sbin/iptables -I INPUT -p tcp --dport -j ACCEPT 写入修改 /etc/init.d/iptables save ...

  2. Educational Codeforces Round 37-E.Connected Components?题解

    一.题目 二.题目链接 http://codeforces.com/contest/920/problem/E 三.题意 给定一个$N$和$M$.$N$表示有$N$个点,$M$表示,在一个$N$个点组 ...

  3. JAVA中方法和变量在继承中的覆盖和隐藏(一)

    我们知道,在JAVA中,子类可以继承父类,如果子类声明的方法与父类有重名的情况怎么办,大伙儿都知道要是重写,但是实际上这又分为两种情况,就是方法和变量在继承时的覆盖和隐藏问题,这些概念性的东西看似无聊 ...

  4. uwsgi的使用

    uwsgi是一个WEB服务器,只要用于python部分,类似于nginx ,apache 1 使用pip命令安装 pip install uwsgi 安装成功以后 可以做一个简单的测试 2 新建一个t ...

  5. python3.6编程第一课画个五角星

    使用的是海龟图库  turtle import turtle turtle.forward(100) turtle.right(144) turtle.forward(100) turtle.righ ...

  6. Sql语句在线转java bean https://www.bejson.com/othertools/sql2pojo/

    https://www.bejson.com/othertools/sql2pojo/

  7. epoll用法【整理】

    l  epoll是什么? epoll是当前在Linux下开发大规模并发网络程序的热门人选,epoll 在Linux2.6内核中正式引入,和select相似,都是I/O多路复用(IO multiplex ...

  8. less gradient-vertical 方法的实现

    // Vertical gradient using CSS where possible, and base64-encoded SVG for IE9 (enables use of this i ...

  9. angular性能优化心得

    原文出处 脏数据检查 != 轮询检查更新 谈起angular的脏检查机制(dirty-checking), 常见的误解就是认为: ng是定时轮询去检查model是否变更.其实,ng只有在指定事件触发后 ...

  10. 使用ES-Hadoop 6.5.4编写MR将数据索引到ES

    目录 1. 开发环境 2. 下载地址 3. 使用示例 4. 参考文献 1. 开发环境 Elasticsearch 6.5.4 ES-Hadoop 6.5.4 Hadoop 2.0.0 2. 下载地址 ...