今年看到一种实现索引的方法,后来调试一下才知道这是对对象索引的,不是我想要的对属性索引的。
让类属性带索引using System;
让类属性带索引
让类属性带索引
public class m
}
这里的this不以改为point,也不能去掉。正是MSDN中说的this的第三种用法。
这种索引,一个类只能有一个,显然不够我用,并且用得也是奇奇怪怪,要显示y的值,要用p来表达。
最理想的是这种模式:
让类属性带索引using System;
让类属性带索引
让类属性带索引
public class m
}

它只是把第一种模式中的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: 应输入类型、命名空间定义或文件尾

但别人根据类索引器这个原理,做出一可以任意多个索引的功能,只是太麻烦了点:

让类属性带索引using System;
让类属性带索引
using System.Collections;
让类属性带索引
让类属性带索引
public class m
}
我把它改后变成这样:
让类属性带索引using System;
让类属性带索引
让类属性带索引
public class m
}
实现属性索引的另一种方法:
让类属性带索引using System;
让类属性带索引
using System.Collections;
让类属性带索引
让类属性带索引
public class m
}

我曾经在第9行写错:point.x=new ArrayList();
编译器给的出错结果为:
p.cs(9,3): error CS0120: 非静态的字段、方法或属性“point.x.get”要求对象引用
p.cs(21,3): (与前一个错误相关的符号位置)
我一直理解不过来。因此耽误了好长时间。

这种虽然实现了索引,但还是不够理想,它引入了ArrayList对象,主要缺点是代码不够简洁。

相关文章:

  • 2022-03-08
  • 2022-01-16
  • 2021-06-16
  • 2021-09-10
  • 2022-12-23
  • 2022-12-23
  • 2021-07-29
  • 2021-06-27
猜你喜欢
  • 2021-10-07
  • 2021-06-11
  • 2022-12-23
  • 2021-07-15
  • 2022-02-22
相关资源
相似解决方案