当前位置:  开发笔记 > 编程语言 > 正文

如何在C#中重载[]运算符

如何解决《如何在C#中重载[]运算符》经验,为你挑选了4个好方法。



1> Florian Grei..:
public int this[int key]
{
    get => GetValue(key);
    set => SetValue(key, value);
}


为什么每次我需要实现一个索引操作符时,我都要查找它?每次我最终得到这个答案...希望我可以多次投票:)
不知道为什么他们选择在这个宣言中省略"操作员"这个词 - 这就是我经常犯的错误!很好的答案
这真是太棒了.可以在界面中完成吗?``interface ICache {object this [string key] {get; 组; ``编辑:**[是的.](http://stackoverflow.com/questions/9586625/how-to-define-indexer-behaviour-to-an-interface)
我只是想在将来打个招呼,他肯定会回到这里
迈克尔:你应该使用泛型:`interface ICache {TContent this [string key] {get; 组; }.

2> William Bren..:

我相信这就是你要找的东西:

索引器(C#编程指南)

class SampleCollection
{
    private T[] arr = new T[100];
    public T this[int i]
    {
        get => arr[i];
        set => arr[i] = value;
    }
}

// This class shows how client code uses the indexer
class Program
{
    static void Main(string[] args)
    {
        SampleCollection stringCollection = 
            new SampleCollection();
        stringCollection[0] = "Hello, World";
        System.Console.WriteLine(stringCollection[0]);
    }
}



3> Jeff Yates..:

[]运算符称为索引器.您可以提供带整数,字符串或任何其他要用作键的类型的索引器.语法很简单,遵循与属性访问器相同的原则.

例如,在您的情况下,a int是键或索引:

public int this[int index]
{
    get => GetValue(index);
}

您还可以添加set访问器,以便索引器变为读写,而不仅仅是只读.

public int this[int index]
{
    get => GetValue(index);
    set => SetValue(index, value);
}

如果要使用其他类型进行索引,只需更改索引器的签名即可.

public int this[string index]
...



4> BFree..:
public int this[int index]
{
    get => values[index];
}

推荐阅读
跟我搞对象吧
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有