摘要:C#语言的异常处理功能可以帮你处理程序运行时出现的任何以外和异常情况。异常处理使用try、catch和inally关键字尝试某些操作,以处理失败情况,尽管这些操作有可能失败,但如果你确定需要这么做,且希望在事后清理资源,就可以尝试这样做。CLR、.NET Framework或任何第三方库或者应用程序代码都可以生成异常。异常使用throw关键字创建。 很多情况下,异常可能不是由代码直接调用的方法引发,而是由调用堆栈中位置更靠下的另一个方法所引发的。这种情况下,CLR将展开堆栈,查找是否有方法包含针对该特定异常雷响的catch块,如果找到这样的方法,就会执行赵东的第一个这样的catch块。如...
阅读全文
摘要:事件概述类或对象可以通过时间向其他类或对象通知发生的相关事情。发送(或引发)事件的类称为“发行者”,接收(或处理)事件的类称为“订户”。事件特点:发行者确定何时引发事件,订户确定执行何种操作来响应该事件。一个事件可以有多个订户。一个订户可以处理来自多个发行者的事件。没有订户的时间永远不会引发。事件通常用户通知用户操作,如:图形用户界面中的按钮单击或菜单选择操作。如果一个事件有多个订户,当引发该事件时,会同步调用多个事件处理程序。(可以使用异步方式调用同步方法)。在.NET Framwork类库中,事件是基于EventHandler委托和EventArgs基类的。订阅和取消订阅事件1.使用VS
阅读全文
摘要:枚举类型为定义一组可以赋值给变量的命名整数常量提供了一种有效方法。例如,如果你必须定义一个变量,该变量的值表示一周中的一天。该变量值能存储七个有意义的值。定义这些值,就可以使用枚举类型。使用enum关键字声明。1 enum Days { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday };2 enum Months : byte { Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec };默认情况下,枚举中每个元素的基础类型是int。使...
阅读全文
摘要:委托和接口都允许类设计器分离类型声明和实现。任何类和结构都能继承和实现给定的接口。可以为任何类上的方法创建委托,前提是该方法符合委托的方法的签名。接口引用或委托可由不了解实现该接口或委托方法的类的对象使用,既然存在这些相似性,那么类设计器何时应该使用委托,何时应该使用接口呢?在一下情况下,请使用委托:当使用事件设计模式时。当封装静态方法可取时。当调用方不需要访问实现该方法的对象中的其他属性、方法或接口时。需要方便的组合。当类可能需要该方法的多个实现时。下面情况下,使用接口:当存在一组可能被调用的相关方法时。放类只需要方法的单个实现时。当使用接口的类想要将该接口强制转换为其他接口或类类型时。当正
阅读全文
摘要:委托可以与命名方法关联。使用命名方法对委托进行实例化时,该方法将做为参数传递。例如:delegate void Del(int x);void Do(int k){/*...*/}Del d=obj.Do();这种称为使用命名的方法。使用命名方法构造的委托可以封装静态方法或实例方法。以前,命名方法是对委托进行实例化的唯一方式。现在,不希望付出创建新方法的系统开销。C#可以对委托进行实例化,并立即指定委托在被调用时将处理的代码块。代码块可以包含Lamb大、表达式或匿名方法。注:作为委托参数传递的方法必须与委托声明具有相同的签名。委托实例可以封装静态或实例方法。委托可以使用out参数,但建议不要在
阅读全文
摘要:委托是一种定义方法签名的类型。当实例委托时,您可以将其实例与任何具有兼容签名的方法相关联。可以通过委托实例调用方法。委托用于将方法作为参数传递给其他方法。事件处理程序就是通过委托调用的方法。自己创建一个自定义的方法,当发生特定事件时某个类(控件)就可以调用您的方法。委托的声明如下:pubic delegate int Calculation(int x,int y);与委托的签名(返回类型和参数)匹配的任何可访问类或结构中的任何方法都可以分配给该委托。方法可以是静态方法,也可以是实例方法。在方法重在的上下文中,方法的签名不包括返回值。但在委托的上下文中,签名包括返回值。也就是,方法和委托必须具
阅读全文
摘要:多态性多态性(Polymorphism),是封装和继承之后,面向对象编程的第三个支柱。多态性具有两个截然不同的方面:1.在运行时,在方法参数和集合或数组等位置,派生类的对象可以做为基类的对象处理。此时,该对象的声明类型不再与运行是类型相同。2.基类可以定义并实现虚方法,派生类可以重写这些方法,即派生类提供自己的定义和实现。运行时,客户端调用该方法,CLR查找对象的运行时类型,并调用虚方法的重写方法。虚方法允许你以统一的方式处理多组先关的对象。例:基类Shape,派生类Rectangle、Circlepublic class Shape{public int X{get;set;} public
阅读全文
摘要:类和结构是.NET Framework中的常规类型系统的两种基本构造。两者在本质上都属于数据结构,封装着一组整体作为一个逻辑单位的数据和行为。数据和行为是该类或结构的“成员”,他们包含各自的method,property和event等。类是一种“引用类型”(堆,内存分配地址)。创建类的对象时,对象赋值到的变量只保存对该内存的引用。将对象引用赋值给新变量时,新变量引用的是原始对象。通过一个变量做出的更改将反映在另一个变量中,因为两者引用同一数据。结构是一种值类型(栈上分配空间,这个空间对应着值类型的变量)。创建结构时,结构赋值到的变量保存该结构的实际数据。将结构赋值给新变量时,将复制该结构。因此
阅读全文
摘要:静态类与非静态类基本相同,但静态类不能实例化。使用类名访问类的成员。对于只对输入参数进行运算而不获取或设置任何内部实例字段的方法集,静态类可以很方便的用作这些方法集的容器。demo:在.NET Framework类库中,静态类Syetem.Math包含的方法只执行数学运算,而无需存储或检索特定Math类实例特有的数据。也就是通过指定类名和方法名来应用类成员。double dub=-2.1;Console.WriteLine(Math.Abs(dub));Output:2.1和所有类型一样,当加载引用静态类的程序时,.NET FrameWork CLR将加载该静态类的类型信息。程序不能指定加载静
阅读全文