12 2021 档案

摘要:C# 编译器允许创建委托来引用一个对象上的扩展方法: internal sealed class SomeType { public void Run() { // 创建一个 Action 委托(实例)来引用静态 ShowItems 扩展方法, // 并初始化第一个实参来引用字符串 “Jeff” A 阅读全文
posted @ 2021-12-31 16:35 Destiny130 阅读(42) 评论(0) 推荐(0)
摘要:编译器在调用基类构造器前使用简化语法对所有字段进行初始化,以维持源代码给人留下的“这些字段总是有一个值”的印象。但假如基类构造器调用了虚方法并回调由派生类定义的方法,就可能出问题。在这种情况下,使用简化语法初始化的字段在调用虚方法之前就初始化好了。 “就可能出问题”指的是出啥问题? 阅读全文
posted @ 2021-12-30 15:54 Destiny130 阅读(37) 评论(0) 推荐(0)
摘要:CLR via C# 定义常量将导致创建元数据 由于常量值从不变化,所以常量总是被视为类型定义的一部分。换言之,常量总是被视为静态成员,而不是实例成员。定义常量将导致创建元数据。 代码引用常量符号时,编译器在定义常量的程序集的元数据中查找该符号,提取常量的值,将值签入生成的 IL 代码中。由于常量的 阅读全文
posted @ 2021-12-30 14:46 Destiny130 阅读(39) 评论(0) 推荐(0)
摘要:在运行时,C#的 “运行时绑定器” 根据对象的运行时类型分析应采取什么动态操作。绑定器首先检查类型是否实现了 IDynamicMetaObjectProvider 接口。如果是,就调用接口的 GetMetaObject 方法,它返回 DynamicMetaObject 的一个派生类型。该类型能处理对 阅读全文
posted @ 2021-12-27 15:16 Destiny130 阅读(90) 评论(0) 推荐(0)
摘要:public int FindComplement(int num) { int n = ~num; int first = num; while(first > 0) { n <<= 1; first <<= 1; } first = num; while (first > 0) { n >>= 阅读全文
posted @ 2021-12-27 09:51 Destiny130 阅读(25) 评论(0) 推荐(0)