摘要:
1、Attribute与Property Attribute是特性,Property是属性。2、Attribute与注释 注释:是给程序员看的,编译的时候会去掉这些信息,也就是说,程序集中没有注释的内容。 Attribute:会被编译到程序集中,在程序集的元数据中,在加载程序集的时候,可以从它的元数据中提取出这些信息。3、说了那么多,考虑下,它解决什么问题? 考虑下面的需求,一个工具类提供了很多静态方法,甲乙两个程序员合作完成,理所当然,应该标识出哪些是甲写的,哪些是乙写的,用于统计。最笨的加注释,但是它有两个问题:a、编译后生成的程序集中,没有了这些注释内容;b、只能通过人工去统计甲... 阅读全文
posted @ 2014-01-14 20:46
Andy Niu
阅读(2209)
评论(0)
推荐(2)
摘要:
1、它解决什么问题? 考虑下面的需求,甲程序员对外暴露接口,内部提供实现。乙程序员使用甲提供的接口,根据面向接口编程的原则,乙关联一个接口类型的引用。正常情况下,乙要使用甲的实现,必须实例化一个具体对象。有没有更好的办法呢?我们知道Java框架spring中有个依赖注入的概念。C#中能不能使用类似的方式呢?2、怎么解决? 使用MEF(Managed Extensibility Framework),示例如下: 1 namespace TestMEF 2 { 3 public interface IBookService 4 { 5 void GetBookN... 阅读全文
posted @ 2014-01-14 20:16
Andy Niu
阅读(475)
评论(0)
推荐(0)
摘要:
1、它们解决什么问题? 考虑下面的需求,Person类有个字段age。我想使用Person p = (Person) 18 来创建一个age为18的Person对象,怎么办? 更进一步,我想使用Person p = 18 来创建一个age为18的Person对象,怎么办?2、使用explicit(显式)和implicit(隐式) 1 class Person 2 { 3 private int age; 4 public int Age 5 { 6 get { return age; } 7 ... 阅读全文
posted @ 2014-01-14 19:55
Andy Niu
阅读(2908)
评论(0)
推荐(2)
摘要:
1、首先区分初始化和赋值。 初始化:创建对象时赋给初始值。赋值:擦除对象当前值,并用新值代替。因此,区分初始化和赋值的关键是,看看对象当前是否已经有值了。2、创建对象的时候,如果没有初始化,对象的值是什么? 取决于对象的类型和对象定义的位置。 a、如果对象是内置类型,定义在方法外,它的值为0,定义在方法内,没有初始化。 b、如果对象是类类型,无论定义在哪里,都会调用默认构造方法,也就是说,对于类类型的对象,不存在没有初始化的情况。3、现在考虑,类中的数据成员,也就是字段。类的构造方法执行两个过程:成员初始化列表和方法内赋值。对于类类型,前者用于初始化,即copy构造;后者用于赋值,即c... 阅读全文
posted @ 2014-01-14 19:28
Andy Niu
阅读(584)
评论(0)
推荐(0)
浙公网安备 33010602011771号