我不理解此C#代码:
public virtual object this[string fullname]
{
get
{
return null;
}
set
{
}
}
特别是 this [string name] 部分。打算使用此代码的人要做什么?这是稍后实现的方式:
public override object this[string fullname]
{
get
{
fullname= fullname.Trim('\"');
//some code ....
return x;
}
set
{
fullname= fullname.Trim('\"');
//some code ...
string[] a= fullname.Split(":".ToCharArray());
//some more code...
}
}
有人在具有此代码的类使用 this 关键字时重新定义它吗?那是怎么回事吗?如果可以,为什么?
答案 0 :(得分:0)
这会使索引运算符超载。它主要用于“集合”类型,例如字符串,数组或列表。您可能会以这种方式熟悉它:
var items = new int[] { 1, 2, 3 };
var item = items[1];
它允许您在有人尝试索引您的类型时进行自定义检查。
在这种情况下,添加virtual关键字意味着派生此类型的类可以执行自定义实现,也可以将其保留并默认使用您正在查看的基类实现。