C#中的类和对象
省略基类的指定等同于从类型 object 派生。
用new生成对象,当不再使用对象时,该对象占用的内存将自动收回。在 C# 中,没有必要也不可能显式释放分配给对象的内存。
派生类能够在继承基类的基础上添加新的成员,但是它不能移除继承成员的定义。
类类型的变量可以引用该类的实例或任何派生类的实例。例如,Point 类型的变量既可以引用 Point 也可以引用 Point3D:
1. 静态字段和实例字段
在C#程序中,没有全局变量的概念,这意味着所有的成员变量只有该类的实例才能操作这些数据。静态变量在类中类似全局变量,保存类的公共信息,所有该类的实例(对象)共享该值。
使用 static 修饰符声明的字段定义了一个静态字段 (static field)。一个静态字段只标识一个存储位置。对一个类无论创建了多少个实例,它的静态字段永远都只有一个副本。不使用 static 修饰符声明的字段定义了一个实例字段 (instance field)。类的每个实例都包含了该类的所有实例字段的一个单独副本。
使用 readonly 修饰符声明只读字段 (read-only field)。给 readonly 字段的赋值只能作为字段声明的组成部分出现,或在同一类中的实例构造函数或静态构造函数中出现。
2. 静态方法和实例方法
静态方法不对特定实例进行操作,并且只能访问静态成员;实例方法对特定实例进行操作,并且能够访问静态成员和实例成员。
调用方法
有四种类型的参数: 值参数 、 引用参数 、 输出参数 和 参数数组 。
下面的示例声明一个抽象类 Expression,它表示一个表达式树节点;它有三个派生类 Constant、VariableReference 和 Operation,它们分别实现了常量、变量引用和算术运算的表达式树节点。
下面的程序使用 Expression 类,对于不同的 x 和 y 值,计算表达式 x * (y + 2) 的值。
启发:
第一个 Console.WriteLine 输出 True,原因是两个列表包含的对象数目和值均相同。如果 List 未定义 operator ==,则第一个 Console.WriteLine 将输出 False,原因是 a 和 b 引用的是不同的 List 实例。
原文: https://www.cnblogs.com/kongxiaoshuang/p/6364114.html