请问关于c的具体应用场景有哪些?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1799个文字,预计阅读时间需要8分钟。
1. 不应为抽象类提供公开的构造方法+抽象类可以有构造方法,但不能实例化。若编程人员未定义构造方法,编译器会自动生成一个默认的protected构造方法。
1、不要为抽象类提供公开的构造方法
抽象类可以有构造方法,但是抽象类不能实例化。如果编程人员没有制定构造方法,编译器会自动生成一个默认的protected构造方法。下面是一个标准的简单抽象类:
abstract class MyAbstractClass { protected MyAbstractClass( ) { } }
抽象类的构造方法不应该是public或internal的。抽象类设计的本意是只能让子类继承,而不是用于生成实例对象。如果抽象类是public或者internal的,它对于其他类型来说就是可见的,而这是不必要的,多余的。抽象类只需对子类可见即可。
2、可见字段应该重构为属性
字段与属性有本质的区别,属性是方法。如下面的Person类型:
class Person { public string Name { get; set; } }
编译器针对属性Name编译后,会生成一个字段和两个方法。
属性相对于字段有如下优势:
1)可以为属性添加代码。属性是方法,所以可以在方法内对设置或获取属性的过程进行编写代码控制。如事件支持等。
2)可以让属性支持线程安全。要让属性变成线程安全的,可以让类型自身去实现。如果让字段支持线程安全,就只有依靠调用者本身实现。
3)属性得到VS编译器支持,能实现自动属性的功能。
本文共计1799个文字,预计阅读时间需要8分钟。
1. 不应为抽象类提供公开的构造方法+抽象类可以有构造方法,但不能实例化。若编程人员未定义构造方法,编译器会自动生成一个默认的protected构造方法。
1、不要为抽象类提供公开的构造方法
抽象类可以有构造方法,但是抽象类不能实例化。如果编程人员没有制定构造方法,编译器会自动生成一个默认的protected构造方法。下面是一个标准的简单抽象类:
abstract class MyAbstractClass { protected MyAbstractClass( ) { } }
抽象类的构造方法不应该是public或internal的。抽象类设计的本意是只能让子类继承,而不是用于生成实例对象。如果抽象类是public或者internal的,它对于其他类型来说就是可见的,而这是不必要的,多余的。抽象类只需对子类可见即可。
2、可见字段应该重构为属性
字段与属性有本质的区别,属性是方法。如下面的Person类型:
class Person { public string Name { get; set; } }
编译器针对属性Name编译后,会生成一个字段和两个方法。
属性相对于字段有如下优势:
1)可以为属性添加代码。属性是方法,所以可以在方法内对设置或获取属性的过程进行编写代码控制。如事件支持等。
2)可以让属性支持线程安全。要让属性变成线程安全的,可以让类型自身去实现。如果让字段支持线程安全,就只有依靠调用者本身实现。
3)属性得到VS编译器支持,能实现自动属性的功能。

