摘要:
字段修饰符Const 常量的值时在编译时确定的,被视为类型的一部分,是静态成员.会导致创建元数据.引用这个常量时会把这个值直接嵌入IL代码中.Static 静态字段,类型的一部分,占用的内存是在类型对象中分配的.类型对象时在该类型第一次被访问到的时候加载的.对于实例字段则是在创建实例时分配的.而且实例字段在初始化静态字段时,在Vs调试中也是无法看到值的.Readonly 只读字段.只能在构造器写入,而且构造器只会被调用一次.编译器和验证机制会确保readonly字段不会再别的方法中写入.但是readonly字段可以通过反射来修改.如果readonly是引用类型,那么不可修改的是引用,但是引用对 阅读全文
posted @ 2013-12-05 18:31
平常心队长
阅读(130)
评论(0)
推荐(0)
摘要:
1. 类型的各种成员System.Runtime.CompilerServices.InternalsVisibleToAttribute(string assemblyName)指定通常仅在当前程序集中可见的类型对指定程序集可见.指定友元程序集.assemblyName包含程序集名字和公司公钥.接口类型必须是Public.如果没有显示声明成员的可访问性,编译器会默认为Private,限制最大的那个.子类重写基类的方法时,只能放宽访问限制,不能缩小.但C#要求两者必须是一样的.是因为CLr承诺派生类总是可以转型为基类,并获取基类方法的访问权,如果在派生类中进行了更严格的限制了,CLR的承诺就无 阅读全文
posted @ 2013-12-05 18:30
平常心队长
阅读(130)
评论(0)
推荐(0)
摘要:
1. 溢出 Checked UnCheckedchecked打开时,如果发生溢出会抛出异常,Unchecked则不会排除异常。编译器默认是关闭溢出检查的Unchecked。若要打开溢出检查,使用/Checked+.在VS的项目属性中也可设置开启与否。也可以给一段代码添加这样的标记。如果这段代码中调用了另外一个方法,这个方法是不受这个标记控制的。System.Decimal不是基元类型,Checked和Unchecked标记对其无效,如果发生溢出是肯定会抛出异常的。System。Numberics.BigInteger内部使用UInt32表示任意大的整数,没有上限和下限,永远不会溢出,可能会有内 阅读全文
posted @ 2013-12-05 18:29
平常心队长
阅读(207)
评论(0)
推荐(0)
摘要:
1. 所有类型都继承自System.Objectobject的GetType方法是非虚方法,防止基类重写此方法,破坏类型安全性.Var test=new Test(“test”)创建对象时所进行的操作:1. 计算类型及所有基类型中定义的实例字段字节数,以及”类型对象指针”和”同步块索引”.2. 从托管对中分配计算的字节数,所有字节设为零(0).3. 初始化”类型对象指针”和”同步块索引”.4. 调用实例构造函数,传入参数.2. 类型装换if(0 is Employee){ var e=(Employee)o;}var e=o as Employee;if(null!=e){}第一中用法要进.. 阅读全文
posted @ 2013-12-05 18:28
平常心队长
阅读(199)
评论(0)
推荐(0)
摘要:
1. 强命名程序集由文件名(不记扩展名),版本号,语言文化标示,公钥组成.如:“MyTypes,Version=1.0.8123.0,Culture=netural,PublicKeyToken=b77a5ac55…”System.Reflection.AssemblyName辅助类,可获取和设置有关程序集的这些信息.2. SN.exe StrongName实用程序,用来生成公钥.SN –K MyCompay.snk 生成包含公钥和私钥的SNK文件.SN –p MyCompany.snk MyCompany.PublicKey 生成只包含公钥的文件SN –tp MyCompany.Public 阅读全文
posted @ 2013-12-05 18:27
平常心队长
阅读(174)
评论(0)
推荐(0)
浙公网安备 33010602011771号