结构 Stuct
结构是值类型. 值类型在内存的栈区(stack), 引用类型在内存的堆区(heep).
用的相对少了, 只有在考虑速度的时候才会去用.
结构和类的对比:
- 结构不能定义无参构造函数
- 结构不能用 null 赋值
- 结构没有继承
- 结构不能定义成抽象
- 结构没有析构函数
- 结构字段不能在定义中初始化, 只能在构造函数中.
运算符重载
实现对运算符 (+ , - , *….) 的重新定义.
注意: 必须为共有静态.
public static int operator + (Car c1, Car c2)
{
return c1.Price + c2.Price;
}
索引器 Indexer
一种特殊的属性. 名称是固定的 this.
作用: 把对象当做数组来使用.
class Student {
int id;
public Student(int id) {
this id = id;
}
}
class Class : IEnumerable {
Student students[];
public Class(int n)
{
sudents = new Student[n];
}
// 实现接口中的所有方法, 此接口只有一个 GetIEnumerator 方法
public IEnumerator GetEnumerator()
{
//迭代 返回 IEnumerator
for(int = 0; i < this.students.Length; i++)
{
yield return students[i];
}
}
// 索引器: 特殊的属性, 需要有 get 和 set 两个访问器
public Student this[ int i ]
{
get
{
return this.students[i];
}
set
{
this.student[i] = value;
}
}
class Program
{
staic void Main(string[] args)
{
Student s1 = new Student(100);
Student s2 = new Student(101);
Student s3 = new Student(102);
Class c1 = new Class(5);
// 实际保存在班级的数组中, 是一个伪数组, 不能用数组的方法. 因为没有实现 IEnumerable 这个接口
// 所以可以单独调用这个接口来实现迭代器.
c1[0] = s1;
c1[1] = s2;
c1[2] = s3;
}
}
}