05 2013 档案
摘要:CLR对类型/结构的字段的排列,可以通过System.Runtime.InteropServices.StructLayoutAttribute来指定,它有三个值,LayoutKind.Auto指CLR自动排列字段;LayoutKind.Sequential指按开发人员声明字段的顺序排列字段;LayoutKind.Explicit表示使用偏移量来排列字段,它要和FieldOffset()一同使用,是精确定位。比如:[StructLayout(LayoutKind.Explicit)] struct S1{[FieldOffset(0)]int a;[FieldOffset(0)]int b;}
阅读全文
摘要:类和接口的访问权限默认是internal,接口成员不能添加访问修饰符,默认是public,类成员默认是private的。C#中静态类不能实现接口,它里面所有的成员(包括成员类型,方法等)必须是静态的。CLR不支持partial,那只是C#的语法,所以partial class必须用C#写。virtual和override,前者用于父类标识可重构的成员,后者用于子类的重构,virtual方法最好少用,因为性能会降低。因为非virtual方法,CLR可以很快定位到这个方法的出处,而virtual方法,CLR得先去找调用该方法的对象是哪个类型的,在确定类型之后才能定位方法的出处,如果派生层次很多很复
阅读全文