摘要:
一.泛型中的开放类型和封闭类型 1.开放类型: 定义:具有泛型类型参数的类型称为开放类型。 特点:CLR禁止构造开放类型的任何实例。(这类似于CLR禁止构造接口类型的实例。) 2.封闭类型: 定义:所有类型参数都传递了实际的数据类型,类型就称为封闭类型。 特点:CLR可以构建实例 二.泛型接口 注: 阅读全文
摘要:
一.事件模式的用法 1.声明参数类型:NewMailEventArgs:EventArgs 2.声明委托类型:public delegate void EventHandler<TEventArgs>(Object sender,TEventArgs e); 3.声明事件:public event 阅读全文
摘要:
经常要构造一个对象并设置对象的一些公众属性(或字段)。 1.为了简化这个常见的编程模式,C#语言支持一种特殊的对象初始化语法。下面是一个例子: Employee e = new Employee(){ Name = "Jeff",Age = 45}; 2.如果属性的类型实现了IEnumerable或 阅读全文
摘要:
1.out关键字: a.不指望调用者在调用方法前就初始化好了对象 b.被调用的方法不能读取参数的值 c.要在方法返回前向这个值写入。 2.ref关键字: a.必须在调用方法前初始化参数的值 b.被调用方法可以读取值以及/或者向值写入。 3.CLR不区分out和ref,但C#编译器是将这两个关键字区别 阅读全文
摘要:
转换操作符是将对象从一种类型转换成另一种类型的方法。 CLR规范要求转换操作符重载方法必须是public和static的方法。 例: 在C#中,implicit关键字告诉编译器为了生成代码来调用方法,不需要在源代码中显式转型。 相反,explicit关键字告诉编译器只有在发现了显式转型时,才调用方法 阅读全文
摘要:
规则和原则: 1.只能在分布类或结构中声明 2.分布方法的返回类型使用时void,不允许out参数,允许有ref参数,可以是泛型方法,可以是实例或者静态方法,而且可以标记为unsafe。 3.分布方法的声明和实现必须具有完全一致的签名。 4.如果没有对应实现的部分,则不能创建委托来引用这个分部方法。 阅读全文
摘要:
1.必须显示调用构造器(就算有无参的构造器也不会执行),否则字段自动分配为0或者null 2.C#编译器不允许值类型定义无参构造器(CRL是允许的) 3.由于C#不允许为值类型定义无参构造器,则在字段声明是赋值也是不允许的。以下代码会报错 4.若定义了构造器,则所有字段都必须被初始化。 5.值类型虽 阅读全文
摘要:
/ 7.1常量 / 常量是值从不变化的符号。定义常量符号时,它的值必须能在编译时确定。确定后,编译器将常量值保存到程序元数据中。这意味着只能定义编译器识别的基元类型的常量。在C#中,以下基元类型,可用于定义常量:Boolean,Char,Byte,SByte,Int16,UInt16,Int32,U 阅读全文
摘要:
例子1: if(o is Employee) Employee e = (Employee)o; 例子2: Employee e = o as Employee; 例子3 Employee e = (Employee)o; 例子1和例子3相比:例子1永远不会报错,例子3一旦无法转换便会报错 例子2和 阅读全文
摘要:
一.CLR支持两种程序集:弱命名程序集(weakly named assembly)和强命名程序集(strongly named assembly). 两种部署方式:私有或全局 私有:私有部署的程序集是指部署到应用程序基目录或者某个子目录的程序集。 全局:全局部署的程序集是指部署到一些公认位置的程序 阅读全文
摘要:
简单应用程序部署(程序集打包) windows Store打包 打包成.appx 非windows store应用打包 1.直接复制 2.使用.cab 3.打包成一个MSI(可做到按需安装 首次尝试加载一个程序集时才安装它) 阅读全文
摘要:
C#编译器:(用csc命令来使用C#编译器) 程序集链接器(Assembly Linker):(用al命令来使用C#编译器) 除了使用C#编译器,还可以使用”程序集链接器“使用程序AL.exe来创建程序。 1.如果程序集要包含由不同编译器生成的模块(而且这些编译器不支持与C#编译器的/addmodu 阅读全文
摘要:
托管PE文件由以下四部分组成: PE32(+)头:是Windows要求的的标准信息。 CLR头:是一个小的信息块,是需要CLR的模块(托管模块)特有的。 版本号:这个头包含模块生成时所面向的CLR的maior(主)和minor(次)版本号; 标志:一些(flag) 一个 MethodDef toke 阅读全文
摘要:
程序集(assembly): 程序集是抽象概念 程序集是一个或多个模块/资源文件的逻辑性分组。其次,程序集是重用,安全性以及版本控制的最小单元。在CLR的世界中,程序集相当于“组件”。 公式表达:程序集 = 清单(manifest) + 托管模块(PE文件) + 资源文件(.jpeg,gif,htm 阅读全文