随笔分类 -  C#

摘要:1.定义接口 public interface IVerifyHandler { void Write(string state); bool OnTimeOut(); void OnError(); }2.在上层中(前端层),继承该接口IVerifyHandler,实现其中的所有方法 //写入状态的方法,实现接口IVerifyHandler public void Write(string state) { //线程调用的方法都不能访问用户控件,必须通过委托调用Form的方法来实现... 阅读全文
posted @ 2013-12-07 20:37 Joe-xin 阅读(1303) 评论(0) 推荐(0)
摘要:一.扩展方法: 扩展方法的行为和静态方法是非常类似的,你只能在静态类中声明它们。为声明一个扩展方法,你需要给该方法的第一个参数指定this关键字(必须这么做),如下例:优点是:通过IntelliSense查看匿名类型,这样更容易 找到需要的功能。// Program.cs public static class EMClass { public static int ToInt32Ext(this string s) { return Int32.Parse(s); } public static int T... 阅读全文
posted @ 2013-12-05 23:03 Joe-xin 阅读(1361) 评论(0) 推荐(0)
摘要:VS2012变化的快捷键:注释::VS2010是(Ctrl+E,C),VS2012是(Ctrl+K, Ctrl+C)(实际操作,按住Ctrl键不放,先按K键,再按C键。相当于Ctrl+K加 Ctrl+C的组合键)反注解:VS2010是(Ctrl+E,U),VS2012是(Ctrl+K, Ctrl+U)1. 强迫智能感知:Ctrl+J; 2.强迫智能感知显示参数信息:Ctrl-Shift-空格; 3.格式化整个块:Ctrl+K+F 4. 检查括号匹配(在左右括号间切换): Ctrl +] 5. 选中从光标起到行首(尾)间的代码: Shift + Home(End) 6. 在方法定义和调用之点切换 阅读全文
posted @ 2013-11-30 21:53 Joe-xin 阅读(361) 评论(0) 推荐(0)
摘要:1.有关简洁: 使用#region标记代码区域,便于折叠2.有关命名:使用有意义的名称,如IsDepartmentReadyToOfferJob使用完整单词,帕斯卡(Pascal)和骆驼(Camel)写法正误NumberOfArgumentsInnargin 根据含义而非类型命名正误ParcelNamestrParcelName 不要用大小写区分名称像普通词一样书写缩略词:XmlReader;System.Linq用复数形式书写集合名称习惯性后缀(前缀):抽象基类-Base接口I-异常-Exception事件参数-EventArgs事件委托-EventHandler特性-Attribute泛型 阅读全文
posted @ 2013-08-15 00:27 Joe-xin 阅读(235) 评论(0) 推荐(0)
摘要:有时候我们会遇到这样的需求,需要向数据库导入Excel,或者从数据库中导出数据存为Excel,尤其是在做报表的时候,或者需要从其他系统导入数据,一般都是以Excel文件形式存在的。正好这几天在做这样的事,我整理一下这两种操作的大概做法。以后遇到这样的问题就不用怕了!!!1.数据从数据库中导出存为Excel:privatevoidbtnInput_Click(objectsender,EventArgse){DataGridViewToExcel("采集信息");} privatevoidDataGridViewToExcel(stringfilename){using(Op 阅读全文
posted @ 2013-07-31 11:49 Joe-xin 阅读(680) 评论(0) 推荐(0)
摘要:通过使用泛型,我们可以极大地提高代码的重用度,同时还可以获得强类型的支持,避免了隐式的装箱、拆箱,在一定程度上提升了应用程序的性能。1.1 理解泛型1.1.1 为什么要有泛型?我想不论大家通过什么方式进入了计算机程序设计这个行业,都免不了要面对数据结构和算法这个话题。因为它是计算机科学的一门基础学科,往往越是底层的部分,对于数据结构或者算法的时间效率和空间效率的要求就越高。比如说,当你在一个集合类型(例如ArrayList)的实例上调用Sort()方法对它进行排序时,.Net框架在底层就应用了快速排序算法。.Net框架中快速排序方法名称叫QuickSort(),它位于Array类型中,这可以通 阅读全文
posted @ 2013-07-26 00:31 Joe-xin 阅读(814) 评论(2) 推荐(3)
摘要:用一个例子来说明事件的使用。创建一个简单的类,名为FileWatch,包含事件OnfileChange。该类将检查在执行应用程序的目录(当前目录,通常是项目名/bin/debug)下,是否存在文件test.txt。如果文件被删除或创建,都将触发事件。同时提供一个方法MonitorFile以不断地查询该文件。方法:在创建一个可用事件之前,首先声明一个委托,放在类的外面。public delegate void FileWatchEventHandler(object sender,EventArgs e);接下来创建类FileWatch。然后声明事件,注意事件的类型即为我们之前定义的委托。pub 阅读全文
posted @ 2013-07-20 16:41 Joe-xin 阅读(314) 评论(0) 推荐(0)
摘要:一个类对象中,主要包括字段、属性和方法。不过除此之外,在类类型中还可以定义嵌套类,也可以定义一个常量。类的字段其实也是变量。如系列三中的类User,就包含有字段m_name,m_password,m_tryCounter。它们的类型分别为string,string,int。字段仍然可以利用public,internal,protected,private来修饰它。不过,我建议如非特殊情况,不要将字段修饰为public。因为,根据”对象封装”的原则,应尽量避免将一个类型的字段以公有方式提供给外部。毕竟,对于字段而言,对象对它的控制非常弱,一旦公开在外,则调用者可以比较容易的对其进行操作,尤其是写 阅读全文
posted @ 2013-07-20 16:00 Joe-xin 阅读(568) 评论(0) 推荐(0)
摘要:以下内容摘自园子里精彩的部分!面向对象思想有三个核心要素:封装、继承与多态。C#中,所有数据类型的实例都是“对象”,不过最能体现对象特质的类型,还是“类”,同时它也是C#中最重要、最频繁使用的类型。所谓“对象”,形象地说,我们可以把它理解为一块积木。设计积木的人需要设计积木的外观与形状,还有内部的材质。堆积木的人对于内部的材质并不关心,他们只需要根据不同的外观与形状来决定堆放的位置。因此,对于开发者而言,要设计面向对象的程序,同时会是两个迥然不同的身份:设计者与使用者。先谈谈使用者。使用者的身份,就是利用已经提供给你的所有对象,根据需求,设计出自己需要实现的程序。就如堆积木的过程。这恰恰是面向 阅读全文
posted @ 2013-07-19 22:25 Joe-xin 阅读(613) 评论(1) 推荐(0)
摘要:什么是“面向对象思想”?其精要当然是“一切皆为对象”的意义。软件的开发与设计,是围绕着开发的目标进行的。比如开发一个电子商务网站,那么与电子商务有关的都是我们要操作和关心的,商品、订单、用户、目录、购物车等等,都是对象。如果要开发一个论坛,那么论坛中必备的要素,如论坛分类、主题、帖子、评论、用户,也全都是对象。从小处说,我们要求写一个算法用以计算阶乘,那么起始值、运算结果、以及整个算法都是对象。那么对象具有什么特质?一般而言,一个对象应具有属性和行为。以现实世界为例,“人”作为一种特殊的动物,也是我们所称谓的“对象”。这个对象具有很多属性,例如姓名,身高、体重、民族、国籍、出生年月等等。而行为 阅读全文
posted @ 2013-07-19 21:44 Joe-xin 阅读(391) 评论(0) 推荐(0)
摘要:一、解决方案、项目、程序集、命名空间初学者很容易把这些概念搞混淆。先说说项目(Project),通俗的说,一个项目可以就是你开发的一个软件。在.Net下,一个项目可以表现为多种类型,如控制台应用程序,Windows应用程序,类库(Class Library),Web应用程序,Web Service,Windows控件等等。如果经过编译,从扩展名来看,应用程序都会被编译为.exe文件,而其余的会被编译为.dll文件。既然是.exe文件,就表明它是可以被执行的,表现在程序中,这些应用程序都有一个主程序入口点,即方法Main()。而类库,Windows控件等,则没有这个入口点,所以也不能直接执行,而 阅读全文
posted @ 2013-07-19 20:00 Joe-xin 阅读(458) 评论(0) 推荐(0)
摘要:用C#代码写简易安装包 阅读全文
posted @ 2013-06-16 02:15 Joe-xin 阅读(3985) 评论(4) 推荐(3)