C#索引器 [操作系统入门]
C# 索引器(Indexer)
索引器(Indexer) 允许一个对象可以像数组一样被索引。当您为类定义一个索引器时,该类的行为就会像一个 虚拟数组(virtual array) 一样。您可以使用数组访问运算符([ ])来访问该类的实例。
语法
一维索引器的语法如下:
element-type this[int index]{
// get 访问器get
{
// 返回 index 指定的值
}
// set 访问器
set
{
// 设置 index 指定的值
}
}
索引器(Indexer)的用途
索引器的行为的声明在某种程度上类似于属性(property)。就像属性(property),您可使用 get 和 set 访问器来定义索引器。但是,属性返回或设置一个特定的数据成员,而索引器返回或设置对象实例的一个特定值。换句话说,它把实例数据分为更小的部分,并索引每个部分,获取或设置每个部分。
定义一个属性(property)包括提供属性名称。索引器定义的时候不带有名称,但带有 this 关键字,它指向对象实例。
class Val{
privatestring type = "";privateint parseId;public Val(){
type
= "default";parseId
= 114514;}
publicstring getType(){
return type;}
//主要是用来维护数组...吧publicstringthis[int id]{
set {
//模拟解析id...
type = $"title:{value}=";
if (id % 2 == 0)
{
type += "video";
}
else
{
type +="article";
}
}
get{
//因为这里没有维护一个数组,所以这两个方法并没有体现出来具体用处
return type;
}
}
publicstaticbooloperator !=(Val va, Val vb)
{
if (va.getType().Equals(vb.getType()))
{
returnfalse;
}
returntrue;
}
publicstaticbooloperator ==(Val va,Val vb)
{
if (va.getType().Equals(vb.getType()))
{
returntrue;
}
returnfalse;
}
}
publicstaticvoid run()
{
Val valA = new Val();
valA[233] = "wtf this article";
Console.WriteLine(valA.getType());
Val valB = new Val();
valB[234] = "wtf this video";
Console.WriteLine(valB.getType());
Console.WriteLine(valA==valB);
}
//果然还是写个正常的索引器使用例子比较好
重载索引器(Indexer)
索引器(Indexer)可被重载。索引器声明的时候也可带有多个参数,且每个参数可以是不同的类型。没有必要让索引器必须是整型的。C# 允许索引器可以是其他类型,例如,字符串类型。
class Vals{
int[] values;string[] names;int size;public Vals(){
size
= 10;names
= newstring[10];values
= newint[10];}
publicstringthis[int index]{
set{
if (index < 0 || index > size - 1) { return; }names[index]
= value;}
get{
return names[index];}
}
publicintthis[string key]{
get{
for(int i=0;i<size;i++){
if (key.Equals(names[i])){
return values[i];}
}
return -1;}
set{
for (int i = 0; i < size; i++){
if (key.Equals(names[i])){
values[i]
= value;}
}
}
}
}
publicstaticvoid run(){
Val valA
= new Val();valA[
233] = "wtf this article";Console.WriteLine(valA.getType());
Val valB
= new Val();valB[
234] = "wtf this video";Console.WriteLine(valB.getType());
Console.WriteLine(valA
==valB);Vals vals
= new Vals();vals[
0]= "anyname";vals[
"anyname"]= 114514;vals[
1] = "testname";vals[
"testname"] = 36942;Console.WriteLine(vals[
"anyname"]);Console.WriteLine(vals[
"noname"]);}
C# 索引器
以上是 C#索引器 [操作系统入门] 的全部内容, 来源链接: utcz.com/z/519314.html