【问题标题】:don't understand what "public virtual object this" means [duplicate]不明白“公共虚拟对象 this”是什么意思[重复]
【发布时间】:2019-05-21 05:59:36
【问题描述】:

我看不懂这段 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 关键字时,该人是否会重新定义它?这是怎么回事?如果有,为什么?

【问题讨论】:

  • 这定义了一个“索引器”——也就是说,其他代码可以做someObj["whatever"] = blah;——索引器有单独的getter和setter
  • public = public virtual = 可以被覆盖 object = 可以返回任何类型 this[string fullname] = 索引器。预计您可以将其称为object o = myClass["x"];
  • 这篇文章可以帮到你:stackoverflow.com/questions/424669/…
  • 谢谢大家,除了在集合上使用之外,对索引器不太熟悉。不知道这是在类中使用它的语法。

标签: c#


【解决方案1】:

那是重载索引操作符。它主要用于“集合”类型,如字符串、数组或列表。你可能对这种用法很熟悉:

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

当有人试图索引你的类型时,它允许你进行自定义检查。

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

【讨论】:

  • 除了您确定的方式之外,对索引器不太熟悉,谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-15
  • 2015-07-15
  • 1970-01-01
  • 2010-11-21
  • 1970-01-01
  • 2017-07-09
相关资源
最近更新 更多