随笔分类 -  C# .NET

.NET学习笔记
摘要:调试是软件开发周期中很重要的一部分。它具有挑战性,同时也很让人疑惑和烦恼。总的来说,对于稍大一点的程序,调试是不可避免的。最近几年,调试工具的发展让很多调试任务变的越来越简单和省时。这篇文章总结了可能节省你大量时间的11个Visual studio的调试技巧和方法。工具/原料Visual studio方法/步骤11 悬停鼠标查看表达式值调试是很有挑战性的。比如在函数内逐步运行可以看出哪里出错,查看堆栈信息可以知道函数被谁调用等等……但是无论哪种情况下,查看表达式和局部变量的值都是很麻烦的(把表达式和局部变量放到watch窗口里)。一种更简单的方法,把鼠标停在所需查看的数据上。如果是类或结构,那 阅读全文
posted @ 2014-02-14 13:26 Jerry_Wu 阅读(329) 评论(0) 推荐(0)
摘要:void Main(){ new EnumForeach().Foreach();}public class EnumForeach{ public void Foreach() { foreach (Status item in Enum.GetValues(typeof(Status))) { item.ToString().Dump(); ((int)item).Dump(); } }}public enum Status{ AA = 1, BB = 2, CC = 3} 开发中有时会需要遍历枚举类型,例如,我在处理一个问题时,需要将整型转换成对应的枚举类型。思路有好多,... 阅读全文
posted @ 2014-01-15 18:49 Jerry_Wu 阅读(26612) 评论(3) 推荐(0)
摘要:未完待续,期待微软推出一些更Cool的新特性新功能... 阅读全文
posted @ 2014-01-05 23:30 Jerry_Wu 阅读(154) 评论(0) 推荐(0)
摘要:在使用.Net3.5里的EntityFramework开发网站的时候,遇到了一个问题:添加记录时,对于DateTime型的数据,无法使用数据库的默认值。 具体的情况是这样的,我的数据库有个Users表,三个字段,id,username,createtime。 id是int型,自增长,主键 username是nvchar(10)型,不允许为空 createtime是DateTime型字段,不允许为空,默认值是getdate() 如果用Entity框架生成实体类,直接添加数据,不指定createtime,那就会在SaveChanges时出错:using(LinqDemoEntitiesl... 阅读全文
posted @ 2013-12-23 18:56 Jerry_Wu 阅读(399) 评论(0) 推荐(0)
摘要:http://developer.51cto.com/art/200908/147009.htmControl Invoke and BeginInvokehttp://www.soft-bin.com/html/2010/07/09/c-control%E7%9A%84invoke%E5%92%8Cbegininvoke%E5%8F%8A%E5%85%B6%E5%AE%9E%E7%8E%B0%E6%9C%BA%E5%88%B6.html 阅读全文
posted @ 2013-12-20 23:07 Jerry_Wu 阅读(193) 评论(0) 推荐(0)
摘要:首先从两者的声明上来看,公共字段只是类用public修饰符所公开的简单公共变量,而属性则是对字段的封装,它使用get和set访问器来控制如何设置或返回字段值。由于属性的实质是方法(get或set方法),在IL中是没有属性的概念的。所以对于开发过程中常用的赋值和取值操作来说,使用公共变量肯定会比使用属性速度要快,性能上也稍高(方法和变量哪个速度不用说了吧)。公共字段虽然在速度上快,但它必须开放字段为public,这样一来对象的调用者便可以直接修改其值,值的内容是否合法,运行中是否会出错,就没有了保障,进而会大大降低类的可重用性;相反,属性类似于方法,它可以对存入的变量的值进行处理,如果觉得该值不 阅读全文
posted @ 2013-12-12 14:24 Jerry_Wu 阅读(245) 评论(0) 推荐(0)
摘要:VS 2008 + .NET 3.5 - C# 3.0新特性之Automatic Properties(自动属性)、Object Initializers(对象初始化器)、Collection Initializers(集合初始化器)和Extension Methods(扩展方法)介绍 ·Automatic Properties(自动属性) ·Object Initializers(对象初始化器) ·Collection Initializers(集合初始化器) ·Extension Methods(扩展方法)示例AutomaticProperties. 阅读全文
posted @ 2013-12-12 14:05 Jerry_Wu 阅读(217) 评论(0) 推荐(0)
摘要:WinForm窗体继承是必须的,但是vs的窗体继承不如Delphi那样随心所欲。1、从父类继承一个窗体后,发现打开子类窗体的设计界面时出错了,错误提示各种各样,原因只有一个:由于vs的继承是必须先生成组件后,再从组件中继承的,所以当父类窗口有load或shown这类的事件时,继承它的子窗体就会先执行这一类的事件。假如父窗口的load事件中有一些类似连接数据库的操作,则往往会出错而无法设计。简单的解决方法是在父窗口的load或shown事件中加入:if (!DesignMode) { 你的代码段..... }终极解决方案:不要在基类窗体中注册Load、、等等事件.参考资料:http://www. 阅读全文
posted @ 2013-12-12 00:18 Jerry_Wu 阅读(1241) 评论(0) 推荐(0)
摘要:如果有一个应用程序,想要在电脑开机的时候自动启动(即使用户未登录Windows也要启动),可以用Windows服务来实现,我只是很简单的尝试了一下,由于前段时间做的一个办公QQ,在服务器端需要始终运行一个控制台程序来监听各种消息,但不能每次开机手动去启动这个控制台程序,所以就写了一个Windows服务,我用VS2008写的,以下是简单做法:先在VS中创建一个Windows服务的项目,在自动生成的service1.cs文件里添加如下语句:string StartAppPath = @"C:\Program Files\办公QQ服务\QQService.exe";这是我要运行的 阅读全文
posted @ 2013-10-23 23:10 Jerry_Wu 阅读(10586) 评论(1) 推荐(0)
摘要:一、抽象类: 抽象类是特殊的类,只是不能被实例化;除此以外,具有类的其他特性;重要的是抽象类可以包括抽象方法,这是普通类所不能的。抽象方法只能声明于抽象类中,且不包含任何实现,派生类必须覆盖它们。另外,抽象类可以派生自一个抽象类,可以覆盖基类的抽象方法也可以不覆盖,如果不覆盖,则其派生类必须覆盖它们。 二、接口: 接口是引用类型的,类似于类,和抽象类的相似之处有三点:1、不能实例化; 2、包含未实现的方法声明; 3、派生类必须实现未实现的方法,抽象类是抽象方法,接口则是所有成员(不仅是方法包括其他成员); 另外,接口有如下特性:接口除了可以包含方法之外,还可以包含属性、索引器、事件,而且这些. 阅读全文
posted @ 2013-07-09 23:33 Jerry_Wu 阅读(201) 评论(0) 推荐(0)
摘要:我是一名.NET新人,Coding的时间不太长,经验不足。平时在Coding的过程中,可能会喜欢直接使用.NET的最新特性。因为方便和容易记忆,所以平时常写的一些用法虽然知道这样用,可以实现逻辑,但是对具体的实现机理不是了解的很透彻,以至于要实现一些更高级的功能或者是对现成的代码做一些扩展,变成一件很费力的事情。平且还不一定能够实现。 就比如说平时写Linq,一贯用法都是直接写Lambda表达式。用起来很爽,但是却不明白为什么这样做就能得到想要的结果。 List<int> list = new List<int>(){1,2,3,4,5,6,7,8,9,10}; var 阅读全文
posted @ 2013-04-23 02:13 Jerry_Wu 阅读(578) 评论(1) 推荐(1)