这种索引,一个类只能有一个,显然不够我用,并且用得也是奇奇怪怪,要显示y的值,要用p来表达。
最理想的是这种模式:
它只是把第一种模式中的this改为y,并且希望要支持多个索引。但这个代码,编译器生成一箩筐错误:
p.cs(16,14): error CS0650:
语法错误,错误的数组声明符。要声明托管数组,秩说明符应位于变量标识符之前
。要声明固定大小缓冲区字段,应在字段类型之前使用 fixed 关键字。
p.cs(16,15): error CS0270:
不能在变量声明中指定数组大小(请尝试使用“new”表达式初始化)
p.cs(16,19): error CS1525: 无效的表达式项“int”
p.cs(16,26): error CS1002: 应输入 ;
p.cs(17,2): error CS1519: 类、结构或接口成员声明中的标记“{”无效
p.cs(18,7): error CS1519: 类、结构或接口成员声明中的标记“{”无效
p.cs(18,20): error CS0270:
不能在变量声明中指定数组大小(请尝试使用“new”表达式初始化)
p.cs(18,27): error CS1519: 类、结构或接口成员声明中的标记“;”无效
p.cs(19,3): error CS0116: 命名空间并不直接包含诸如字段或方法之类的成员
p.cs(19,21): error CS1518: 应输入 class、delegate、enum、interface 或 struct
p.cs(19,30): error CS1022: 应输入类型、命名空间定义或文件尾
但别人根据类索引器这个原理,做出一可以任意多个索引的功能,只是太麻烦了点:
我曾经在第9行写错:point.x=new ArrayList();
编译器给的出错结果为:
p.cs(9,3): error CS0120: 非静态的字段、方法或属性“point.x.get”要求对象引用
p.cs(21,3): (与前一个错误相关的符号位置)
我一直理解不过来。因此耽误了好长时间。
这种虽然实现了索引,但还是不够理想,它引入了ArrayList对象,主要缺点是代码不够简洁。