摘要: 在.NET图像界面开发中最常见的一个事件大概就是按钮的clicked事件了,当点击图形界面的按钮时,就会调用一个与这个事件相关的方法对这个事件进行响应,做一些相关操作。但是事件并不局限于图像界面,也可能是满足程序的某个逻辑判断触发了事件。引发事件的对象叫做事件发送方,捕获事件并对其做出响应的对象叫做事件接收方。但是事件发送方并不知道哪个对象或者方法会处理它引发的事件,所以需要在事件发送方和事件接收方之间存在一媒介,明确某个对象或者某个类型的某个方法会对这个事件进行响应。.NET用委托作为事件发送方与事件接收方之间的媒介,委托只有一个签名,只要方法签名与委托签名匹配的方法,都可以声明自己对这个委 阅读全文
posted @ 2011-09-13 08:34 秋无语 阅读(347) 评论(0) 推荐(1) 编辑
摘要: 面向对象的特征封装、继承和多态。Polymorphism(多态性)来源于希腊单词,指“多种形态”。多态性的一个重要特征是方法的调用是在运行时确定而不是编译时。在.NET中用于实现多态性的关键词有virtual、override、abstract、interface。virtual实现多态shape类是通用的基类,draw是一个虚方法,每个派生类都可以有自己的override版本,在运行时可以用shape类的变量动态的调用draw方法。 public class Shape { public virtual void Draw() { Console.WriteLine("base c 阅读全文
posted @ 2011-09-05 08:45 秋无语 阅读(774) 评论(5) 推荐(1) 编辑
摘要: 使用LINQPad可以很方便的调试linq以及lambda表达式。其中自带了linq以及F#简单入门教程,LINQPad不管你喜不喜欢,反正我喜欢了,呵呵。LINQPad很精简,只有一个exe文件,可以从http://www.linqpad.net下载到。不扯淡了,简单介绍下这个工具,展示下LINQPad的魅力,真的很不错。先看下如何连接数据库,运行LINQPad按下图进行操作,点击next,弹出如下界面,点击OK后的界面如下,下面就可以对具体表进行linq操作了,如图而后就可以在右侧的编辑窗口编写代码了,点击不同的选项将会出现类似如下界面, 阅读全文
posted @ 2011-08-30 08:46 秋无语 阅读(3050) 评论(2) 推荐(7) 编辑
摘要: 反射方式在开发过程中对静态方法的调用是通过类型名后面加个点而后是调用方法的名称,对类型实例方法的调用是通过new一个对象,而后点加方法名称,这是最熟悉不过的两种方式。还可以通过读取CLR元数据,利用反射进行方法调用。在利用反射方式调用方法时,最重要的两个类是System.Type和System.Reflection.MethodInfo。用MethodInfo类型的Invoke方法调用方法,必须传入目标对象实例的引用。如下: public class Calculate { //使用反射可以调用私有方法 private int Add(int leftNum, intrightNum) { r 阅读全文
posted @ 2011-08-29 07:52 秋无语 阅读(12927) 评论(3) 推荐(1) 编辑
摘要: 最近有个项目需要用到类似百度文库以及豆丁的在线浏览组件,网上转悠半天就找到了个flexpaper,需要从这里下载http://code.google.com/p/flexpaper/downloads/list。flexpaper 支持的文档类型为swf格式。于是乎,就想着把pdf文件转换成swf,因为装了adobe reader软件的电脑ms word之类的文档可以直接保存为pdf格式。网上都说pdf2swf这个工具不错,需要从这里下载http://www.swftools.org/download.html。只需要用命令行操作即可,小试一下果然牛的不得了啊。把PDF转换成SWF需要用命令行 阅读全文
posted @ 2011-08-26 10:59 秋无语 阅读(5251) 评论(8) 推荐(0) 编辑
摘要: 向方法传递参数有按值传递和按引用传递两种方式,按值传递将导致被调用方法有自己的该参数的私有拷贝。如果参数是值类型,被调用方法将拥有自己的该实例的私有拷贝。如果参数是引用类型,那么被调用的方法拥有该引用类型的引用的私有拷贝。按引用传递在C#中是用ref 或者out修饰的方法参数,按引用传递导致被调用方法得到一个托管指针,该指针指向调用方的变量。闲话就不多说了,这都是大家熟悉的不能再熟悉的东西。下面写个小demo,把这些概念图形化一下。public class Book { publicstring BookName { get;set; } publicstring Author { get;s 阅读全文
posted @ 2011-08-23 08:16 秋无语 阅读(1232) 评论(4) 推荐(0) 编辑
摘要: 在C#1.0中的委托必须显式的用一方法签名和声明委托相匹配的方法进行初试化。如:delegate bool IsDisplay(strings); static bool IsTrue(string flag) {return flag == "true"? true : false; } static void Display(IsDisplay isDisplay, stringstr) {if (isDisplay(str)){Console.WriteLine("Hello World!");} } static void Main(string 阅读全文
posted @ 2011-08-22 08:34 秋无语 阅读(424) 评论(0) 推荐(0) 编辑
摘要: 随着网站浏览人数的增多,页面浏览日志的记录成了数据库TCP/IP连接数飙升的祸首,初步想法就是先把日志记录到内存,累计到一定数量时,一次性入库。故此,就想到了sqlbulkcopy,它可以使数据批量入库。Msdn对它的描述:使用SqlBulkCopy 类只能向 SQLServer 表写入数据。但是,数据源不限于 SQL Server;可以使用任何数据源,只要数据可加载到DataTable或者IDataReader实例读取数据。写个控制台程序测试了一下,生成了100000条数据,入库时间大概1秒,不过,只用了两个字段,实际中不会有这么少的字段。先建一测试表,CREATE TABLE [dbo]. 阅读全文
posted @ 2011-08-17 14:55 秋无语 阅读(1024) 评论(3) 推荐(0) 编辑
摘要: 自定义特性允许任何人扩展元数据格式,如果在现有元数据格式中,一个字段或者方法的某个方面无法获取,那么就可以用自定义特性来表示那个方面。可以通过反射或者元数据接口来读取自定义特性。自定义特性作为BLOB(二进制大对象块)存储在CLR元数据中。自定义特性的存在与否不影响CLR对类型的处理。相反,自定义特性处于一种休眠状态,等待程序用反射或者元数据接口读取它们。用枚举控制文件的读写很方便,但是需要在枚举前面加上FlagsAttribute进行修饰。下面可以看个实例,说明下有无FlagsAttribute修饰对结果的影响。[Flags] public enum Fruit { peach = 0x01 阅读全文
posted @ 2011-08-16 08:10 秋无语 阅读(4421) 评论(0) 推荐(0) 编辑
摘要: 打开.Net Framework源代码随便看几个类,就会发现索引器的影子。索引器可以被重载,可以接收一个或者多个参数,但是不可以定义为静态的。可以用关联数组的方式访问索引器。public class Fruit{ stringpeach = "a round juicy fruit that has a softyellow or red skin and a large hard seed in the center,or the tree that this fruit grows on"; stringorange = "a round fruit that 阅读全文
posted @ 2011-08-15 08:04 秋无语 阅读(490) 评论(0) 推荐(0) 编辑