运算符(operator)是一种函数成员,用来定义可应用于类实例的特定表达式运算符的含义。有三种运算符能够被定义:一元运算符、二元运算符和转换运算符。所有的运算符必须声明为public和static。
list类声明了两个运算符,运算符 “==”和运算符 “!=”,并且向表达式赋予新的含义,而这些表达式将这些运算符应用到list实例上。特别指出,这些运算符定义了两个list对象的相等比较,即使用它们的equals方法进行比较。下面的示例使用“==”运算符比较两个list实例。
using system;
class test {
static void main() {
list a = new list();
a.add(1);
a.add(2);
list b = new list();
b.add(1);
b.add(2);
console.writeline(a == b); //输出 \
b.add(3);
console.writeline(a == b); //输出 \ } }
第一个console.writeline输出true,原因是两个list集合对象包含个数和值都相同的对象。假如list没有定义运算符 “==”,那么第一个console.writeline将输出false,因为a和b引用不同的list实例。
1.6.6.6 析构函数
析构函数(destructor)是用于实现析构类实例所需操作的成员。析构函数不能带参数,不能具有可访问性修饰符,也不能被显式地调用。垃圾回收期间会自动调用所涉及实例的析构函数。
垃圾回收器在决定何时回收对象和运行析构函数方面采取宽松的策略。特别指出,析构函数的调用时机是不确定的,并且析构函数可能运行在任何线程上。由于这些或者其他原因,只有没有其他可行的解决方案,类才实现析构函数。

