在“本”关键字作为一个属性在“本”关键字作为一个属性(The 'this' keyw

2019-05-12 01:53发布

我知道C#很好,但它是一些奇怪的事情对我来说。 在一些旧的程序,我已经看到了这样的代码:

public MyType this[string name]
{
    ......some code that finally return instance of MyType
}

它是怎么叫什么名字? 有什么用的呢?

Answer 1:

这是索引 。 当你宣布它,你可以这样做:

class MyClass
{
    Dictionary<string, MyType> collection;
    public MyType this[string name]
    {
        get { return collection[name]; }
        set { collection[name] = value; }
    }
}

// Getting data from indexer.
MyClass myClass = ...
MyType myType = myClass["myKey"];

// Setting data with indexer.
MyType anotherMyType = ...
myClass["myAnotherKey"] = anotherMyType;


Answer 2:

这是一个索引属性 。 它可以让你直接“访问”类的指数,你会访问一个数组,列表,或字典一样。

在你的情况,你可以有这样的:

public class MyTypes
{
    public MyType this[string name]
    {
        get {
            switch(name) {
                 case "Type1":
                      return new MyType("Type1");
                 case "Type2":
                      return new MySubType();
            // ...
            }
        }
    }
}

那么你可以使用此类似:

MyTypes myTypes = new MyTypes();
MyType type = myTypes["Type1"];


Answer 3:

这就是所谓的索引一个特殊的属性。 这允许你的类像一个数组访问。

myInstance[0] = val;

您可以在自定义集合最经常看到这种行为,作为数组的语法是可以通过键值来标识,通常它们的位置(如数组和列表)集合中的元素访问一个众所周知的接口或通过逻辑密钥(如在字典和哈希表)。

你可以找到更多关于在MSDN文章索引索引器(C#编程指南) 。



Answer 4:

这是一个索引,通常用作集合类型的类。

看看使用索引器(C#编程指南)



文章来源: The 'this' keyword as a property