不明白“这是公共虚拟对象”的意思

时间:2018-12-20 17:19:05

标签: c#

我不理解此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 关键字时重新定义它吗?那是怎么回事吗?如果可以,为什么?

1 个答案:

答案 0 :(得分:0)

这会使索引运算符超载。它主要用于“集合”类型,例如字符串,数组或列表。您可能会以这种方式熟悉它:

var items = new int[] { 1, 2, 3 };
var item = items[1];

它允许您在有人尝试索引您的类型时进行自定义检查。

在这种情况下,添加virtual关键字意味着派生此类型的类可以执行自定义实现,也可以将其保留并默认使用您正在查看的基类实现。