0

我在另一个库中发现,您可以使用各种参数调用类实例...

他们使用了一种this[int y, int z]格式。

我试图复制它,但在任何 C# 网站上都找不到任何东西。

class xx
    {
        private int _y { get; private set; }
        private int _z { get; private set; }
        public xx this[int y, int z] { get; set; }
        public xx(int y, int z){
            _y = y;
            _z = z;
        }
    }


    xx z = new xx(1, 2);
    xx y = xx[1, 2];

我试图弄清楚如何使用这种this[options]格式。(上面的代码是完全错误的)

不必每次都建立新实例会使事情变得更容易。

而不是去:

Column y = new Column(1, "value", "attributes;attribute;attribute");
FullTable.Add(y);

我可以:

FullTable.Column[1, "value", "attributes;attribute;attribute"]; // can get the instance or create it.

它已经被实例化了。

无论如何,OOP 大师将如何做到这一点?请问有什么想法吗?

4

2 回答 2

3

this[int x]语法称为索引器。这就是你如何实现数组、列表和字典中使用的东西来让你做的事情,例如myList[0]. 它不能用作构造函数,您应该只使用您已经知道的普通构造函数语法。

于 2013-10-25T19:46:12.453 回答
3

它称为索引器,用于引用类中的项目。

例如,假设您想编写一个程序来组织您的 DVD 电影收藏。您可以有一个构造函数来创建 DVD 电影以放入集合中,但是通过索引器允许的 ID“获取”DVD 电影会很有用。

public class MovieCollection
{
    private Dictionary<string, Movie> movies = 
               new Dictionary<string, string>(); 
    private Dictionary<int, string> moviesById = 
               new Dictionary<int, string>();

    public MovieCollection()
    {

    }

    // Indexer to get movie by ID
    public Movie this[int index]  
    {
        string title = moviesById[index];
        return movies[title];
    }
}
于 2013-10-25T19:47:42.850 回答