C#这个[]括号构造函数

C#这个[]括号构造函数,c#,.net,constructor,C#,.net,Constructor,我在另一个库中发现,可以使用各种参数调用类实例 他们使用了这种[inty,intz]格式 我试图复制它,但在任何C#网站上都找不到任何东西 我在想,如何使用这个this[options]格式(以上代码完全错误) 不必每次都建立新实例,这将使事情变得更容易 而不是去: Column y = new Column(1, "value", "attributes;attribute;attribute"); FullTable.Add(y); 我可以做到: FullTable.Column[1, "

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

他们使用了
这种[inty,intz]
格式

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

我在想,如何使用这个
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大师是如何做到这一点的?有什么想法吗?

这个[int x]语法被称为。这是如何实现数组、列表和字典中所使用的功能,例如
myList[0]
。它不能用作构造函数,您应该使用您已经知道的普通构造函数语法。

此[int x]语法称为。这是如何实现数组、列表和字典中所使用的功能,例如
myList[0]
。它不能用作构造函数,您应该使用您已经知道的普通构造函数语法。

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

例如,假设您想编写一个程序来组织您的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];
    }
}
公共类电影集
{
私人字典电影=
新字典();
专用词典moviesById=
新字典();
公众电影集()
{
}
//按ID获取电影的索引器
公共电影此[整数索引]
{
字符串标题=moviesById[索引];
返回电影[标题];
}
}

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

例如,假设您想编写一个程序来组织您的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];
    }
}
公共类电影集
{
私人字典电影=
新字典();
专用词典moviesById=
新字典();
公众电影集()
{
}
//按ID获取电影的索引器
公共电影此[整数索引]
{
字符串标题=moviesById[索引];
返回电影[标题];
}
}

它不是构造函数,而是索引器。您需要实现getter和setter。看,我明白了,但是你怎么能让它像我想的那样成为一个构造函数呢?使用Activator.CreateInstance()??在索引器中构造对象?用于搜索与语言相关的内容,请参阅@Habib,酷,非常好的参考资料。它不是构造函数,而是索引器。您需要实现getter和setter。看,我明白了,但是你怎么能让它像我想的那样成为一个构造函数呢?使用Activator.CreateInstance()??在索引器中构造对象?用于搜索与语言相关的内容,请参阅@Habib,cool,非常好的参考资料。@KirkWoll-我说的是“几乎”,但我的意思是在您试图引用一个项目数组的用例中使用,对于调用者,他们不关心数据如何在内部存储,如我的代码示例所示。我正在更新答案,以删除“苛刻”的语言。:-)@KirkWoll-我确实说了“几乎”,但我的意思是说在您试图引用一个项目数组的用例中使用,对于调用者,他们不关心数据如何在内部存储,如我的代码示例所示。我正在更新答案,以删除“苛刻”的语言。:-)