摘要: 命名空间System.Collections.Generic中有两个非常重要,而且常用的泛型集合类,它们分别是Dictionary字典和List列表。Dictionary字典通常用于保存键/值对的数据,而List列表通中用于保存可通过索引访问的对象的强类型列表。下面来总结一下,用代码来演示怎么初始化,增加,修改,删除和遍历元素。Dictionary字典 代码如下:namespace DictionaryDemo1{ class Program { static void Main(string[] args) { //创建Di... 阅读全文
posted @ 2013-11-07 09:44 蚂蚁拉车 阅读(2104) 评论(0) 推荐(0) 编辑
摘要: 熟练操作vs的快捷键,可以有效地提高开发效率,下面将vs 2008与vs 2010的快捷键进行了总结,结果如下表:注:vs 2010与vs 2008的快捷键基本相同。编辑:CTRL + M, L将当前源代码的大纲在折叠与展开间切换CTRL + E, C(commentary)注释掉所有选中的源代码部分CTRL + E, U(undo)取消掉所有选中的源代码部分的注释CTRL + E, D(document)按源码缩进和标准格式来格式化当前文档CTRL + E, F(format)按源码缩进和标准格式来格式化选中文档文件:CTRL + SHIFT + N(new)显示新建项目对话框CTRL + 阅读全文
posted @ 2013-11-07 09:29 蚂蚁拉车 阅读(218) 评论(0) 推荐(0) 编辑
摘要: 人在江湖,总得会几门手艺,英语必不可缺,下面几张图诠释了什么叫强大: 阅读全文
posted @ 2013-11-05 20:20 蚂蚁拉车 阅读(322) 评论(0) 推荐(0) 编辑
摘要: 在clr var c#一书中,作者描述当用sealed修饰类时,可以提高系统性能而且建议大家也养成用sealed来修饰类的习惯。由于对性能二字比较敏感,所以本文先测试一下用sealed分别修饰和不修饰类时,new1亿次的时间,然后说一下我的看法,如果有更好的测试方法,欢迎大家在此交流。 首先上我的测试代码: class Program { static void Main(string[] args) { for (int j = 0; j < 10; j++) { V t ... 阅读全文
posted @ 2013-11-04 20:53 蚂蚁拉车 阅读(2098) 评论(4) 推荐(0) 编辑
摘要: 典故:某日,毛、周、刘三人聊天。 毛:怎么能让猫自愿吃辣椒? 刘:掐着脖子灌。 毛:强迫不是自愿。 周: 先饿几天,再混到猫爱吃的东西里。 毛:欺骗不是自愿。把辣椒涂到猫肛门上,它就会自己去舔了。 应用 1: 第一次世界大战时期,美国有一位叫哈利的 大富翁,他是一个做生意的奇才。 15岁时,他在一个马戏团当童工,主要工作是叫 卖柠檬冰水。为此,哈利动起了小脑筋。令人不解的是,在马戏开始前,他却站在门口大声喊:“来,来,顶好吃的花生米,看马戏的人每人赠送一大包,不要 钱。”听到叫喊声,观众被吸引了过去。高兴地拿走不要钱的花生米,进入戏场看马戏。 可... 阅读全文
posted @ 2013-10-31 11:47 蚂蚁拉车 阅读(607) 评论(0) 推荐(0) 编辑
摘要: 以前如果碰到子窗体(ShowDialog显示)中的的改变会影响父窗体子控件内容时,要么就在ShowDialog()结束后更新数据,要么就把子控件设置为public。1.ShowDialog方式:不能立马看到更新结果,ShowDialog会阻断当前线程,一定要等到子窗体关闭后,线程才被唤醒。2.把控件设置了public 需要实例化父窗体,父窗体是一个大对象,虽然最终会被GC回收,GC也不知道什么时候才会把这个大对象销毁掉(书上说要等到内存不够用的时候),但始终会占用内存一段时间,影响性能不说,只为访问一个子控件而实例化一个大对象,得不偿失。3.使用事件解决问题,既然当前主线程被锁定了,用户自.. 阅读全文
posted @ 2013-10-31 11:33 蚂蚁拉车 阅读(521) 评论(0) 推荐(0) 编辑
摘要: 教材的说法:进程是资源分配的基本单位;线程是系统调度的基本单位。平时我们写的程序都是作为线程运行的;进程可以看做是包括一系列线程和资源的统称;一个进程至少包括一个线程(主线程,进入main函数时产生的);在其中可以创建其它线程,也可以不创建。同一进程间的线程究竟共享哪些资源呢,而又各自独享哪些资源呢?共享的资源有a. 堆 由于堆是在进程空间中开辟出来的,所以它是理所当然地被共享的;因此new出来的都是共享的(16位平台上分全局堆和局部堆,局部堆是独享的)b. 全局变量 它是与具体某一函数无关的,所以也与特定线程无关;因此也是共享的c. 静态变量 虽然对于局部变量来说,它在代码中是“放”在某一函 阅读全文
posted @ 2013-10-30 20:18 蚂蚁拉车 阅读(902) 评论(0) 推荐(0) 编辑
摘要: 当某个字段是引用类型,且该字段是readonly类型时,那么不可改变的是引用,而非引用的对象。如以下代码: public sealed class AType { public static readonly char[] InvalidChar=new char[]{'A','B','C'}; } public sealed class AnOtherType { public static void M() { //下面三行代码是合法的,可通过编译,并可成功 //修改Inva... 阅读全文
posted @ 2013-10-30 14:06 蚂蚁拉车 阅读(161) 评论(0) 推荐(0) 编辑
摘要: 前面的几篇文章已经比较完整地解释了怎么使用Log4Net,但是我们可能需要将Log4Net的日志类封装在自己的类库中,以便C/S或B/S程序进行调用。下面的示例程序简单地分为两层,一个是应用程序层WebApplication_testLog4Net,另一个就是公用类库Common。1、首先,我们还是在类库中先添加Log4net的引用2、直接在类库Common中的AssemblyInfo.cs中添加Log4Net的配置文件地址。3、log4net.config还是放在应用程序那层(如左图),以便正确地输出到应用程序的输出目录。如果放在类库层的话,它就会输出到类库的生成目录,而Log4Net只会到 阅读全文
posted @ 2013-10-29 17:31 蚂蚁拉车 阅读(267) 评论(0) 推荐(0) 编辑
摘要: 毕竟人不是神,谁写的程序都会有bug,有了bug不可怕,可怕的是出错了,你却不知道错误在哪里。所以我们需要将应用程序中抛出的所有异常都记录起来,不然出了错,找问题就能要了你的命。下面我们主要讨论的是如何捕捉全局的异常。基本上在winform或web中捕获全局异常的思路都是一样的,在全局的应用程序对象中添加异常捕获的代码,并写入日志文件中。一.在Winform程序中捕获全局异常在winfrom中我们需要了解Application对象中的两个事件①Application.ThreadException 事件--在发生未捕获UI线程异常时发生。②AppDomain.UnhandledExceptio 阅读全文
posted @ 2013-10-29 17:29 蚂蚁拉车 阅读(385) 评论(0) 推荐(0) 编辑