Welcome 微信登录

首页 / 软件开发 / .NET编程技术

CLR笔记:5.基元,引用和值类型

CLR笔记:5.基元,引用和值类型

CLR笔记:5.基元,引用和值类型2011-10-26 博客园 包建强5.1基元类型编译器(C#)直接支持的任何数据类型都称为基元类型(primitive type),基元类型直接映射到FCL中存 在的类型。可以认为 using string = System.String;自动产生。FCL中的类型在C#中都有相应的基元类型,但是在CLS中不一定有,如Sbyte,UInt16等等。C#允许在“安全”的时候隐式转型—&md...
CLR笔记:6.类型和成员基础

CLR笔记:6.类型和成员基础

CLR笔记:6.类型和成员基础2011-10-26 博客园 包建强1.Class的可见性有public和internal两种,public对所有程序集都可见,internal仅对其所在的程序 集可见。默认是public的。2.友元程序集,使用friend assembly可以实现单元测试,而不使用反射技术。书上讲的是按照命令行编译。我测试用的是vs2005的solution,如下:3.成员的可访问性成员默认是private的,接口类型的成员都是public...
CLR笔记:7.常量和字段

CLR笔记:7.常量和字段

CLR笔记:7.常量和字段2011-10-26 博客园 包建强1.常量常量是永远不会改变的符号。它的值必须在编译时就确定。编译后,CLR将常量的值保存在Assembly的 元数据中,这意味着常量必须是基元类型。常量是类型的一部分,总是被当成静态成员,但并不显示声明为static。public const Int32 MaxEntriesList = 100;当代码引用常量时,CLR在元数据中查找该符号,将提取的常量值嵌入到IL中,所以常量没有地址以及 相应...
CLR笔记:8.方法

CLR笔记:8.方法

CLR笔记:8.方法2011-10-26 博客园 包建强1.实例构造器ctor(引用类型)创建引用类型的实例时的步骤:首先,为实例的数据字段分配内存;接着,初始化对象的系统开销字段(类型对象指针和同步块索引);最后,调用类型的实例构造器设置对象的初始状态。ctor不能被继承,不能用virtual,new,override,sealed,abstract。如果类中没有显示定义任何ctor,则默认定义一个无参ctor,这个ctor不执行任何语句,只是调用基 类...
CLR笔记:10.事件

CLR笔记:10.事件

CLR笔记:10.事件2011-10-26 博客园 包建强事件也是方法。定义一个事件成员意味着类型具有三种能力:*类型的静态方法/实例方法可以订阅类型事件*类型的静态方法/实例方法可以注销类型事件*事件发生时通知已订阅事件的方法.NET2.0的事件仍然是基于Win32的,只不过使用了Observer模式来实现,同时建立在Delegate机制之 上。事件的设计步骤如下(基本上是Observer的实现步骤):10.1 设计一个对外提供事件的类型1.定义Even...
CLR笔记:12.枚举类型和位标志

CLR笔记:12.枚举类型和位标志

CLR笔记:12.枚举类型和位标志2011-10-26 博客园 包建强12.1 枚举类型强类型,枚举之间进行不能隐式转换枚举类型直接派生于System.Enum,后者派生于System.ValueType,值类型,可以使用装箱/拆箱不能定义方法/属性/事件。同一个枚举中,多个枚举符号有相同的数值,数值转符号时,会返回其中第一个符号。枚举类型要与使用它的类在同一级。默认为int,可以指定枚举成员的类型,只有int,uint,byte,sbyte,long,u...
CLR笔记:13.数组

CLR笔记:13.数组

CLR笔记:13.数组2011-10-26 博客园 包建强CLR支持一维/多维/交错数组。两种声明方式:Array a;a = new String[0, 1];String[] s = new String[5];注意,声明不要给与数组长度,因为此时还不分配内存;new时要指定长度。将数组声明为Array和像String[]这样带中括号的,效果是一样的,只是前者更灵活,当然类型不安全 ,可能会有运行期错误。所有数组都隐式派生于System.Array,后...
CLR笔记:14.接口

CLR笔记:14.接口

CLR笔记:14.接口2011-10-26 博客园 包建强CLR以及所有托管语言都不支持多继承,通过接口模拟实现14.1 类和接口的实现接口定义:为一组方法签名指定一个名称的方式。类实现接口,就一定要提供接口所有方法的实现。即使抽象类,也要全部实现,但是,它可以把接口方法声明为abstract的,从而把这个接口方法留给 派生类去实现,如下: public interface ITest { void Test(); } ...
CLR笔记:15.委托

CLR笔记:15.委托

CLR笔记:15.委托2011-10-26 博客园 包建强1.Delegate是类型安全的,也就是说,在编译期可以检测出错误;而与之相似的Reflection是类型不 安全的。Delegate是方法地址的指针,而且不区分static和instance方法。Delegate是定义在Class之外的,这个平级的Class中包括Delegate要使用的方法。2.Delegate允许引用类型的协变(covariance)和反协变(contra-variance)。...
CLR笔记:17.自定义属性

CLR笔记:17.自定义属性

CLR笔记:17.自定义属性2011-10-26 博客园 包建强自定义属性,使用声明式编程的方式,HTML也是属于这种编程方式。17.1 使用自定义属性只是将一些附加信息与某个目标元素关联起来。编译器在托管模块的元数据中生成额外的信息。从System.Attribute派生,所有符合CLS的属性都是从这个基类派生。有定位参数和命名参数两种,前者必须指定。可以将多个属性应用于单个目标元素,用逗号分割。17.2 定义自己的属性属性类标准写法: [...
并发事件: ReaderWriterGate锁

并发事件: ReaderWriterGate锁

并发事件: ReaderWriterGate锁2011-10-26 msdn Jeffrey Richter有一天,我正在忙于一个咨询项目,忽然碰到了一个以前从未碰到过的线程同步问题。该公司正在创 建一个 Web 服务,并且服务器收到的客户端请求几乎均需要以只读方式存取某些共享数据。 有时,还会 收到需要修改共享数据的请求,同时我们需要使这些数据保持同步。这种情况听起来非常适合采用读写锁然而,经过对项目的更深入研究,我了解到该公司的要求有一个不寻常的地方:...
COM(VB/VBA/Script)利用服务标记调用WCF服务之一使用类型化契约

COM(VB/VBA/Script)利用服务标记调用WCF服务之一使用类型化契约

COM(VB/VBA/Script)利用服务标记调用WCF服务之一使用类型化契约2011-10-26 博客园 LazyBee第一步:创建WCF服务1 打开Visual Studio 2008, 新建一项目,我们这里建立一个Web站点,采用WCF Service Application模板,新项目名称为WCFServiceMoniker,如下图所示:2 单击“Ok”之后,VS2008将为我们生成相应的目录结构和文件,如下:3 为了简单...
COM(VB/VBA/Script)利用服务标记调用WCF服务之二使用MEX契约

COM(VB/VBA/Script)利用服务标记调用WCF服务之二使用MEX契约

COM(VB/VBA/Script)利用服务标记调用WCF服务之二使用MEX契约2011-10-26 博客园 LazyBee第一步:创建WCF服务上一篇我们使用类型化契约的服务标记在COM中调用WCF服务,不过这个有一 定的局限性,因为需要注册类型,所以需要.Net FrameWork,但是在很多情况下COM客户端所在的环境没有 .Net Framework,比如说在Excel中,需要调用一个WCF服务来计算某个单元格的值,而且这个Excel文件可 能分发...
COM(VB/VBA/Script)利用服务标记调用WCF服务之三使用WSDL契约

COM(VB/VBA/Script)利用服务标记调用WCF服务之三使用WSDL契约

COM(VB/VBA/Script)利用服务标记调用WCF服务之三使用WSDL契约2011-10-26 博客园 LazyBee前面我们介绍了使用MEX契约的服务标记在COM中调用WCF服务,这种方式是通过MEX终结点动态取得元 数据,使用起来是比较方便;但是有时服务的元数据中可能包含恶意用户可以利用的关于应用程序的敏感 信息,也就是说为了安全考虑有些服务可能不会通过MEX公布元数据信息。如果哦某些服务没有公布元数 据信息,用类型化有比较麻烦,针对这种情况我...
COM(VB/VBA/Script)利用服务标记调用WCF服务之四:使用配置文件

COM(VB/VBA/Script)利用服务标记调用WCF服务之四:使用配置文件

COM(VB/VBA/Script)利用服务标记调用WCF服务之四:使用配置文件2011-10-26 博客园 LazyBee这几天友人同学说他在COM利用服务标记调用WCF服务的时候遇到一个问题,就是他返回的的Soap消息 大于65536这个wsHttpBinding的缺省值,引发调用错误。需要将MaxReceivedMessageSize更改成可以容纳 大消息内容的值。在我前面的三篇文章中使用的都是缺省的wsHttpBinding,所以不存在这个问题。现...
<< 81 82 83 84 85 86 87 88 89 90 >>