随笔分类 -  C#点滴记录

摘要:using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace Test.Other{ public class TestDelegateAndEvent { public delegate void TestDelegate(); public event TestDelegate TestEventHandler; public void Test() ... 阅读全文
posted @ 2014-03-21 04:49 LeimOO 阅读(357) 评论(0) 推荐(0)
摘要:委托 1、委托可确保回调方法是类型安全的; 2、委托可以顺序调用多个方法,并支持静态方法和实例方法; 3、委托封装实例方法是非常有用的,因为对象内部的代码可以访问对象的实例方法成员,这就意味着对象可以维护一些状态,并且在回调方法执行期间用到这种状态; 4、委托实际上是类,因为编译器会为委托生成一个完整的类,所以在可以定义类的地方,就可以定义委托; 5、Delegate类定义了两个只读的公共... 阅读全文
posted @ 2010-01-29 11:53 LeimOO 阅读(215) 评论(0) 推荐(0)
摘要:通过引用向方法传递参数: 1、Out与ref的区别: 如果方法的参数标记为out,参数可以不初始化,但必须在返回之前对对象赋值; 如果方法的参数标记为ref,参数必须在调用之前初始化; 也就是说,对大量值类型使用关键字out后,代码效率会提高; 2、CLR允许基于方法对out和ref参数的使用来重载方法,但仅存在out和ref差异的方法是不允许的; static void Add(int ... 阅读全文
posted @ 2010-01-22 17:21 LeimOO 阅读(396) 评论(1) 推荐(0)
摘要:实例构造器和类(引用类型): 1、类只能拥有类自己的实例构造器;实例构造器不能被继承; 2、以下修饰符不能用于实例构造器:virtual、new、override、sealed、abstract; 如果类的修饰符为abstract,那么默认构造器可访问性为protected,否则为public; 3、如果基类没有提供无参构造器,那么类必须显示调用基类的构造器,否则编译出错; public ... 阅读全文
posted @ 2010-01-22 16:39 LeimOO 阅读(299) 评论(0) 推荐(0)
摘要:属性: 1、属性可以标记任意的访问修饰符,并且可以定义在接口中; 2、属性类型不能是void类型; 3、属性的Get访问器不接受参数; 4、c#不允许出现泛型属性; 5、属性里访问器的可访问性默认跟属性相同,也可以自行限定; public class SomeType { public string Name { get { return null; } protected set {... 阅读全文
posted @ 2010-01-22 11:37 LeimOO 阅读(288) 评论(0) 推荐(0)
摘要:struct class Program { static void Main(string[] args) { Point p = new Point(1, 1); Console.WriteLine(p); p.Change(2, 2); Console.WriteLine(p); object o = p; Console.WriteLine(o); ((Point)o)... 阅读全文
posted @ 2010-01-04 17:37 LeimOO 阅读(259) 评论(0) 推荐(0)
摘要:C#中new的用法总结:New关键字 1、为对象在(堆)上分配空间; 2、调用对象的构造函数; 3、返回对象的空间地址,放到栈上;举例: object obj = new object(); 汇编: 00000027mov ecx,790F9C18h 0000002ccall FFCC0E74 00000031mov esi,eax 00000033mov ecx,esi 00000035c... 阅读全文
posted @ 2009-10-23 16:07 LeimOO 阅读(270) 评论(0) 推荐(0)
摘要:C#中析构函数是有垃圾搜集器来调用的,当所引用的堆上的数据当无效时,会隐式调用。一般表现为当引用变量超出其作用域时就会调用。 Close函数和Dispose函数则是一种约定:调用Close函数释放资源后可能还需要再次使用,而Dispose函数释放的资源不再使用;  另外,如果类实现了IDisposable接口,实例化类时可以使用using关键字,则当超出using关键字作用域时会隐式调用Disp... 阅读全文
posted @ 2009-10-12 18:47 LeimOO 阅读(668) 评论(0) 推荐(0)
摘要:深入浅出.NET泛型编程前言  .NET 2.0中泛型的出现是一个令人激动的特征。但是,什么是泛型?你需要它们吗?你会在自己的应用软件中使用它们?在本文中,我们将回答这些问题并细致地分析泛型的使用,能力及其局限性。  类型安全  .NET中的许多语言如C#,C++和VB.NET(选项strict为on)都是强类型语言。作为一个程序员,当你使用这些语言时,总会期望编译器进行类型安全的检查。例如,如果... 阅读全文
posted @ 2009-09-10 10:26 LeimOO 阅读(335) 评论(0) 推荐(0)
摘要:源码下载:http://www.tracefact.net/SourceCode/Delegates-and-Events-in-CSharp.rar引言委托 和 事件在 .Net Framework中的应用非常广泛,然而,较好地理解委托和事件对很多接触C#时间不长的人来说并不容易。它们就像是一道槛儿,过了这个槛的人,觉得真 是太容易了,而没有过去的人每次见到委托和事件就觉得心里别(biè... 阅读全文
posted @ 2009-09-09 10:03 LeimOO 阅读(185) 评论(0) 推荐(0)
摘要:1、装箱和拆箱是一个抽象的概念 2、装箱是将值类型转换为引用类型 ;拆箱是将引用类型转换为值类型利用装箱和拆箱功能,可通过允许值类型的任何值与Object 类型的值相互转换,将值类型与引用类型链接起来 例如: int val = 100; object obj = val; Console.WriteLine (“对象的值 = {0}", obj); 这是一个装箱的过程,是将值类型转换... 阅读全文
posted @ 2009-09-09 09:59 LeimOO 阅读(175) 评论(0) 推荐(0)
摘要:一、抽象类 (1) 抽象方法只作声明,而不包含实现,可以看成是没有实现体的虚方法 (2) 抽象类不能被实例化 (3) 抽象类可以但不是必须有抽象属性和抽象方法,但是一旦有了抽象方法,就一定要把这个类声明为抽象类 (4) 具体派生类必须覆盖基类的抽象方法 (5) 抽象派生类可以覆盖基类的抽象方法,也可以不覆盖。如果不覆盖,则其具体派生类必须覆盖它们。如: using System; pu... 阅读全文
posted @ 2009-09-03 09:34 LeimOO 阅读(319) 评论(0) 推荐(0)
摘要:一.类与结构的示例比较:   结构示例:   public struct Person   {   string Name;   int height;   int weight   public bool overWeight()   {   //implement something   }   }   类示例:   public class TestTime   {   int h... 阅读全文
posted @ 2009-09-03 09:27 LeimOO 阅读(221) 评论(0) 推荐(0)
摘要:1. string.Empty==" " !=null,所以在判断string类型变量时,最好使用string.IsNullOrEmpty();2. string 与 String 的区别:(1).string是c#中的类,String是.net Framework的类(在c# IDE中不会显示蓝色),c# string映射为.net Framework的String;(2).如果用string,... 阅读全文
posted @ 2009-07-23 11:27 LeimOO 阅读(323) 评论(0) 推荐(0)