摘要:
什么是匿名方法?匿名方法是C#2.0引入的一个新特性,它允许开发者声明自己的函数代码而无须使用委托函数。C#为委托提供一种机制,可以为委托定义匿名方法,匿名方法没有名称,编译器会定指定一个名称,匿名方法中不能使用跳转语句跳转到该匿名方法的外部,也不能跳转到该方法的内部。也不能在匿名方法外部使用的ref和out参数。通过使用匿名方法,可以不必创建单独的方法,因此减少了实例化委托所需的编码系统开销。例如,如果创建方法所需的系统开销是不必要的,则指定代码块(而不是委托)可能非常有用。什么时候该使用匿名方法1.需要一个临时方法,该方法使用次数极少;2.这个方法的代码很短,甚至可能比方法声明都短的情况下 阅读全文
摘要:
有的时候,我们想要调用一个委托,但同时可以执行多个方法(自定义事件中最为常见),比如,一个工作文档生成之后,系统要将生成文档日志,而且还要被保存到数据库中,对于以上二个操作,如果只想调用一个委托,就可以顺序完成,那么使用多播委托,就可以实现。如果调用多播委托,就可以按顺序连续调用多个方法。为此,委托的签名就必须返回 void (否则,返回值应送到何处?)(当委托只包含一个方法的时候,其返回类型的声明可以参照所封装的方法,不一定必须是void)。实际上,如果编译器发现某个委托返回 void ,就会自动假定这是一个多播委托。多播委托(MulticastDelegate)提供了一种类似于流水线式的钩 阅读全文
摘要:
我们都应该清楚,在使用委托之前,先要定义一个委托类型,如下所示:delegate int MyDelegate(int a,int b);MyDelegate md =null;既然叫做委托类型,就说明MyDelegate实际上是一个类,上面的写法只是一种简单的缩略写法,实际上,我们自己定义的委托,都是继承自System.MulticastDelegate类的.可以发现还存在4个方法,一个是构造函数。MulticastDelegate类MultiDelegate类是一个特殊类(Special Class),和System.Delegate类一样,该类只能够被编译器以及内置的工具类所继承,我们自 阅读全文
摘要:
委托可以这样来理解:它是一种数据类型,和引用类型类似,不过和一般的类相比,委托的实例不是在堆中的数据,而是一个方法。委托类似于引用类型,和C++中的函数指针很相似,但是不同之处就在于,它不是存在于堆中的。正是有了委托我们才得以将函数打包成一个变量进行传递。这就是说,我们不止能够将数据作为参数传递,还可以将一个函数作为参数进行传递,这样就可以在需要的时候方便的进行控制的反转(Ioc,控制反转)。代码下载地址下面写一个简单的实例进行理解:两个数求其中的较大值、较小值。 /// /// 两个数求较大值 /// /// ///... 阅读全文
摘要:
最近在做项目,这几天遇到的问题要用到几个数据转换,特此记录一下。1.DataTable转换为XML的三种方式 public static string DataTableToXml(this DataTable dt) { ////第一种 返回的XML字符串比较干净,DataTable行中数据为空的没有写入到XML字符串中 System.IO.TextWriter tw = new System.IO.StringWriter(); dt.WriteXml(tw); retur... 阅读全文
摘要:
最近在处理MVC时,遇到要将特殊字符,或者XML格式的数据传递到后台,但是后台解析发现无法识别,处理有误。可以通过以下方式处理。1.Javascript 端处理主要对要传递的数据通过escape函数进行处理即可 escape(string)但是要注意escape() 函数可对字符串进行编码,这样就可以在所有的计算机上读取该字符串。语法escape(string)参数描述string必需。要被转义或编码的字符串。返回值已编码的 string 的副本。其中某些字符被替换成了十六进制的转义序列。说明该方法不会对 ASCII 字母和数字进行编码,也不会对下面这些 ASCII 标点符号进行编码: - _ 阅读全文
摘要:
在使用MVC开发Web时,有需求要将页面所有控件及其值传递到客户端与预定义的界面字段配置进行匹配。之前用的方法是,通过Form提交表单,在控制器中通过Request.Form["字段名称"]获取值的方式。现在又找到一种方法即通过Jquery 先获取视图中的控件,然后传递即可。如下获取页面所有input控件function printTextValue(){ var texts = $("input:text"),textArray = []; texts.each(function(){ var $this =$(this); ... 阅读全文
摘要:
1.堆与栈栈是一种先进后出的数据结构,是编译期间就分配好的内存空间,因此你的代码中必须就栈的大小有明确的定义。栈中每个指针(当运行到那个变量时)会指向堆中的某一内存区域或说是空间。堆(heap)就直接是内存区域了,它是为了栈的引用而开发内存的。通常内置变量就是值类型是被保存在栈中的。其他由.NET框架(Framework)提供的,或者是我们自己定义的对象即引用类型,一般被创建在堆中并将由栈中变量引用。是程序运行期间动态分配的内存空间,你可以根据程序的运行情况确定要分配的堆内存的大小。栈上存储的是:值类型,引用类型的“地址” 堆上是:引用类型的“对象”或者是引用类型的实际值,可空类型2.值类型与 阅读全文
摘要:
1.首先介绍ROW_NUMBER() OVER的基本用法2.看一下实例数据初始化数据create table employee (empid int ,deptid int ,salary decimal(10,2))insert into employee values(1,10,5500.00)insert into employee values(2,10,4500.00)insert into employee values(3,20,1900.00)insert into employee values(4,20,4800.00)insert into employee values 阅读全文
摘要:
1.从System.String[]转到List<System.String> List<System.String> List = new List<System.String>(); string[] str={"1","2","3"}; List = new List<System.String>(str);2.从List<System.String>转到System.String[] List<System.String> List = new List& 阅读全文