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

回到顶部