当前位置:首页 > Windows程序 > 正文

c#高级编程第七版 学习笔记 第三章 对象和类型

2021-03-28 Windows程序

第三章 对象和类型

本章的内容:

         类和结构的区别

         类成员

         按值和按引用传送参数

         方法重载

         构造函数和静态构造函数

         只读字段

         部分类

         静态类

         Object类,其他类型都从该类派生而来

3.1 类和结构

         类和结构都是创建对象的模板,每个对象都包含数据,并提供了处理和访问数据的方法

         结构和类的区别是他们在内存中的存储方式、访问方式(类是存储在堆上的引用类型,而结构是存储在栈上的值类型)和他们的一些特征(如结构不支持继承)。较小的数据类型使用结构可提高性能。但在语法上,结构和类非常相似,主要的区别是使用关键字struct代替class来声明结构。

         对于类和机构,都使用关键字new来声明实例。

3.2 类

3.2.1 数据成员

         类中的数据和函数称为类的成员。数据成员和函数成员

         成员的可访问性:public、protected、internal protected、private或internal

         数据成员:字段、常量和事件

         使用const关键字来声明常量。

         函数成员提供了操作类中数据的某些功能,包括方法、属性、构造函数和终结器(finalizer)、运算符及其索引器

3.2.2 函数成员

         构造函数是实例化对象时自动调用的特殊函数。他们必须与所属的类同名,且不能有返回类型。构造函数用于初始化字段的值

         终结器类似于构造函数,但是在CLR检测到不再需要某个对象时调用它。它们的名称与类相同,但前面有个“~”符号

         索引器允许对象以数组或集合的方式进行索引

         如果把一个参数传递给方法,且这个方法的输入参数前带有ref关键字,则方法对变量所做的任何改变都会影响原始对象的值

         c#要求对传递给方法的参数进行初始化,在传递给方法之前,无论是按值传递,还是按引用传递,任何变量都必须初始化。

         带有out关键字的变量可以不用初始化

         参数也可以是可选的,必须为可选参数提供默认值。可选参数还必须是方法定义的最后一个参数。

         c#支持方法的重载-----方法的几个版本有不同的签名(即,方法名相同,但参数的个数和/或类型不同)。为了重载方法,只需声明同名但参数或类型不同的方法即可。

         c#的一个新特征是也可以给类编写无参数的静态构造函数。这种构造函数只运行一次,而前面的构造函数是实例构造函数,只要创建类的对象,就会执行它们。

         编写静态构造函数的一个原因是,类有一些静态字段或属性,需要在第一次使用类之前,从外部源中初始化这些静态字段和属性。

         静态构造函数没有访问修饰符,其他c#代码从来不调用它,但在加载类时,总是由.NET运行库调用它,所以像public或private这样的访问修饰符就没有任何意义。出于同样原因,静态构造函数不能带任何参数,一个类也只能有一个静态构造函数。很显然,静态构造函数只能访问类的静态成员,不能访问类的实例成员。

         注意,无参数的实例构造函数与静态构造函数可以在同一个类中同时定义。尽管参数列表相同,但这并不矛盾,因为在加载类时执行静态构造函数,而在创建实例时执行实例构造函数,所以何时执行哪个构造函数不会有冲突。

         public class UserPreference

         {

                   public static readonly Color BackColor;

                   static UserPreference()

                   {

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/68817.html