摘要:
使用了继承之后,当我们初始化一个子类时,除了会调用子类的构造函数外,同时也会调用基类的构造函数。 子类的初始化顺序如下: (1)初始化类的实例字段; (2)调用基类的构造函数; (3)调用子类的构造函数; 阅读全文
摘要:
封装:把客观事物封装成类,并将类内部的实现隐藏,以保证数据的完整性; 比如年龄赋值为负数,就是个例子。当我们把类的字段定义为公共类型时,外部对象可以直接对类内部的数据进行操作,此时无法对这些操作进行一些逻辑判断! 面向对象编程中的封装特性,是一种保护状态数据完整性的方法。 在面向对象编程中,应更多地 阅读全文
摘要:
类和结构体,对两者进行比较 语法上的区别在于,定义类要使用关键字class,而定义结构体则使用关键字struct; 结构体中不可对声明字段进行初始化,但类可以; 如果没有为类显式地定义构造函数,C#编译器会自动生成一个无参数的实例构造函数,我们称之为隐式构造函数;但在结构体中,无论你是否显式地定义了 阅读全文
摘要:
当一个类包含数组成员时,索引器的使用将大大地简化对类中数组成员的访问。 索引器的定义类似于属性,也具有get访问器和set访问器,以下是 [修饰符] 数据类型 this [索引类型index] { get{//返回类中数组某个元素} set{//对类中数组元素赋值} } 索引器是一种针对私有字段进行 阅读全文
摘要:
析构函数用于在类销毁之前释放类实例所使用的托管和非托管资源。 对于C#应用程序所创建的大多数对象,可以依靠.NET Framework的垃圾回收器(GC)来隐式地执行内存管理任务。 但是,若创建封装了非托管资源的对象,在应用程序使用完这些非托管资源之后,垃圾回收器将运行对象的机构函数来释放这些资源。 阅读全文
摘要:
如果没有为类显式地定义一个构造函数,则C#编译器会自动生成一个函数体为空的默认无参的实例构造函数。 构造函数主要用于创建类的实例对象。 当调用构造函数创建一个对象时,构造函数会为对象分配内存空间,并初始化类的成员。 构造函数分为实例构造函数和静态构造函数两种。 实例构造函数用于创建和初始化类的实例。 阅读全文
摘要:
方法是由方法签名和一系列语句的代码块组成。 其中方法签名包括方法的访问级别(比如public或private)、可修饰符(例如abstract关键字)、方法名称和参数。 C#也支持方法重载。方法重载指的是在类中可以定义多个名称相同但方法签名不同的方法。这里,“方法签名不同”指的是方法的参数顺序、参数 阅读全文