吴佳鑫的个人专栏

当日事当日毕,没有任何借口

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

12 2011 档案

使用Action来重构相关的方法
摘要:public static void Find(string filter, Action<string> onSuccess, Action<Exception> onFail);这个方法可以用下面的代码来调用:其中:result 是string类型,ex 是 Exception类型Bingosoft.GDBM.Data.SysManager.DAL.SysNoticeDAL.Find(" and Data_Flag>0",(result) => { List<Bingosoft.GDBM.Data.SysManager.Enti 阅读全文

posted @ 2011-12-21 20:52 _eagle 阅读(188) 评论(0) 推荐(0) 编辑

使用泛型的自定义事件类来取代自定义事件定义的参数
摘要:在系统中,我们可能会有很多自定义的事件,那么事件多了,就会定义很多的delegate,这会给代码可读性带来灾难。在.net中,我们可以继承EventArgs,并使用泛型来定义一个通用的参数类。 public class ParameterEventArgs<T> : EventArgs { public T Parameter { get; set; } }其中T可以是任意类型。类。如下使用:public event EventHandler<ParameterEventArgs<object>> ModuleCommand; protected void 阅读全文

posted @ 2011-12-21 20:49 _eagle 阅读(238) 评论(0) 推荐(0) 编辑

匿名类型
摘要:在C#里有这样一些类型,它是作为临时储存数据的,生命周期只在这个方法内,方法结束了,这个类型的生命周期也没有了。那么这里我们就可以使用一个匿名类型。varKeyPair=new{Key=”yuyi”,Value=”20”};这个KeyPair就是一个匿名类型,注意KeyPair这里是一个变量名,并不是类的名字。嗯,前面还有一个var,这又是什么呢?这是C# 3.0里面的隐式局部变量。隐式类型局部变量还是先介绍一下隐式类型局部变量吧:在C# 3.0里多了一个关键字var,他表示这样的一种类型:C#编译器可以根据上下文推断的出来比如var I = 5;编译器可以根据后面的赋值推断的出来i应该是个整 阅读全文

posted @ 2011-12-13 23:31 _eagle 阅读(1775) 评论(0) 推荐(2) 编辑

后台CS代码中创建四种常用的SL动画效果
摘要:http://www.cnblogs.com/chengxingliang/archive/2011/03/07/1974436.html后台CS代码中创建四种常用的动画效果【附带源码实例】 阅读全文

posted @ 2011-12-13 23:26 _eagle 阅读(244) 评论(0) 推荐(0) 编辑

匿名方法的使用
摘要:匿名方法相信很多人都听过,它是C#2.0的一个新特性,顾名思义,匿名方法就是没有名称的方法。那么在C#中的匿名方法有哪些好处,在C#中如何使用呢?匿名方法最明显的好处就是可以降低另写一个方法的工作量,另外一个好处就是可以访问调用者的变量,降低传参数的复杂度,下面就通过一些使用例子来具体看看。1、在事件中使用匿名方法下面是一个定时器的小例子,我们常规的写法如下:常规写法Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->classEventTest 阅读全文

posted @ 2011-12-13 00:52 _eagle 阅读(895) 评论(0) 推荐(0) 编辑

C#中的global::system***命名空间别名限定符
摘要:using System;class TestApp{ // Define a new class called 'System' to cause problems. public class System { } // Define a constant called 'Console' to cause more problems. const int Console = 7; const int number = 66; static void Main() { // Error Accesses TestApp.Console //Console.Wr 阅读全文

posted @ 2011-12-13 00:38 _eagle 阅读(1680) 评论(0) 推荐(0) 编辑

C#泛型编程
摘要:C#泛型编程转自:http://www.cnblogs.com/thcjp/archive/2006/08/27/487550.htmlhttp://www.cnblogs.com/kid-li/archive/2006/11/29/577045.html 泛型:通过参数化类型来实现在同一份代码上操作多种数据类型。利用“参数化类型”将类型抽象化,从而实现灵活的复用。例子代码:class Program { static voidMain(string[] args) { int obj = 2; Test<int> test = new Test<int>(obj); 阅读全文

posted @ 2011-12-13 00:33 _eagle 阅读(12420) 评论(0) 推荐(3) 编辑

遍历Dictionary<K,V>的两种方式
摘要:Dictionary<string,int> things = new Dictionary<string,int>();things.Add(........);things.Add(........);第一种方式:可以使用Keys和values属性迭代集合中的键和值:foreach(string key in things.Keys){// ......}或foreach(int value in things.Values){//....}第二种方式:还可以迭代集合中的各个项,把每个项作为一个 KeyValuePair<K,V>实例来获取。foreac 阅读全文

posted @ 2011-12-12 23:53 _eagle 阅读(6504) 评论(0) 推荐(0) 编辑

泛型和泛型约束、泛型接口
摘要:转自http://www.cnblogs.com/guowenhui/archive/2011/10/25/2223275.html所谓泛型,即通过参数化类型实现在同一份代码上操作多种类型的数据,泛型编程是一种范式的转化(在这里体现为类型的晚绑定),他利用参数化类型,将类型抽象化,从而实现代码的灵活复用,精简代码。注:1.NET参数化类型不是编译(JIT编译)时被实例化,而是运行时被实例化。 2.由微软在产品文档中提出建议,所有的泛型参数名称都以T开头,这是作为一种编码的通用规范。在定义泛型时,可以对客户端代码在实例化类时用于类型参数的类型施加一些限制,如果客户端代码尝试使用某个约束所不允.. 阅读全文

posted @ 2011-12-08 00:13 _eagle 阅读(5291) 评论(0) 推荐(0) 编辑

default 关键字的两种用法
摘要:一。大家非常熟悉的在switch语句中,如果没有任何 case 表达式与开关值匹配,则控制传递给跟在可选 default 标签后的语句。如果没有 default 标签,则控制传递到 switch 以外二。用于泛型定义中在泛型类和泛型方法中,在预先未知以下情况时,如何将默认值分配给参数化类型 T: T 是引用类型还是值类型,如果 T 为值类型,则它是数值还是结构。下面详细说明一下。之所以会用到default关键字,是因为需要在不知道类型参数为值类型还是引用类型的情况下,为对象实例赋初值。考虑以下代码:class TestDefault<T> { public T foo() { T 阅读全文

posted @ 2011-12-07 22:27 _eagle 阅读(7496) 评论(1) 推荐(2) 编辑

?可空类型 和 ??运算符
摘要:?运算符可以使值类型为null 例如: int ?x = null;??运算符 (允许给可能等于null的表达式提供另一个值)例如:int y = x ?? 1;结果 y为 1,即当x为null时 返回 1即运算符右侧数据,反之返回运算符左侧数据(如果第一个操作数不是null,该运算符就等于第一个操作数,否则该运算符就等于第二个操作数) 说明:有时让值类型为null是很有用的(尤其是处理数据库时),泛型使用 System.Nullable<T>类型提供了使值类型为空的一种方式。例如:system.Nullable<int> nullableInt;int? nullab 阅读全文

posted @ 2011-12-07 00:05 _eagle 阅读(393) 评论(0) 推荐(0) 编辑

C#迭代器
摘要:迭代器概述迭代器是可以返回相同类型的值的有序序列的一段代码。迭代器可用作方法、运算符或 get 访问器的代码体。迭代器代码使用 yield return 语句依次返回每个元素。yield break 将终止迭代。有关更多信息,请参见 yield。可以在类中实现多个迭代器。每个迭代器都必须像任何类成员一样有唯一的名称,并且可以在 foreach 语句中被客户端代码调用,如下所示:foreach(int x in SampleClass.Iterator2){}迭代器的返回类型必须为 IEnumerable、IEnumerator、IEnumerable<T> 或 IEnumerato 阅读全文

posted @ 2011-12-05 00:33 _eagle 阅读(5707) 评论(0) 推荐(1) 编辑

深入foreach工作方式
摘要:IEnumerable 接口负责使用foreach循环。下面说明在foreach中,迭代集合collectionObject的过程如下:1.调用collectionObject.GetEnumerator(),返回一个 IEnumerator引用。这个方法可以通过IEnumerable接口的实现代码来获得,但这是可选的。2.调用所返回的IEnumerator接口的MoveNext()方法。3.如果MoveNext()方法返回true,就使用IEnumerator接口的 Current属性获取对象的一个引用,用于foreach循环.4.重复前面两步,直到MoveNext()方法返回false为止 阅读全文

posted @ 2011-12-05 00:22 _eagle 阅读(263) 评论(0) 推荐(0) 编辑

this索引符
摘要:索引符是一种特殊类型的属性,可以把她添加到一个类的定义中,一提供类似于数组的访问。在Card对象的Cards集合中添加索引符:public class Cards:CollectionBase{.....public Card this[int cardIndex]{get{ return (Card)List[cardIndex]; }set{ List[cardIndex]=value; }}}在访问索引符时,将使用对象名,后跟放在方括号中的索引参数(例如 Cards[0])。这段代码对List属性使用一个索引符.IList.List属性返回的是一个System.Object对象;简单的理 阅读全文

posted @ 2011-12-04 23:46 _eagle 阅读(260) 评论(0) 推荐(0) 编辑

关于CollectionBase
摘要:今天看了一下C#中接口的东西,发现对CollectionBase(为强类型集合提供抽象基类)中的具体实现原理不是很了解。经过查看一些资料,分析过后得到以下的初步认识。system.Collections.CollectionBase类主要显示的实现ICollection和IList接口和IEnumerable接口。但只提供了一些要求的执行代码,特别是IList的Clear()和RemoveAt()方法,以及ICollection 的 Count属性,如果要使用提供的功能,就需要自己执行其他代码。具体的显示接口实现,可以查看MSDN的相关资料。(注:ICollection主要是实现将自己的项目复 阅读全文

posted @ 2011-12-04 23:35 _eagle 阅读(2669) 评论(2) 推荐(1) 编辑

点击右上角即可分享
微信分享提示