C#属性语法此[]

C#属性语法此[],c#,properties,C#,Properties,在搜索与Java的Hashmap等价的C#时,我遇到了一段我以前从未见过的代码。希望有人能解释这个类中属性定义的签名 public class NullableDictionnary : Dictionary<string, string> { string null_value; public StringDictionary this[string key] { get { if (key ==

在搜索与Java的Hashmap等价的C#时,我遇到了一段我以前从未见过的代码。希望有人能解释这个类中属性定义的签名

public class NullableDictionnary : Dictionary<string, string>
{
    string null_value;


    public StringDictionary this[string key]
    {
        get
        {
            if (key == null) 
            {
                return null_value;
            }
            return base[key];
        }
        set
        {
            if (key == null)
            {
                null_value = value;
            }
            else 
            {
            base[key] = value;
            }
        }
    }
}
公共类NullableDictionary:字典
{
字符串空值;
公共字符串字典此[字符串键]
{
收到
{
if(key==null)
{
返回空值;
}
返回基[键];
}
设置
{
if(key==null)
{
null_值=值;
}
其他的
{
基[键]=值;
}
}
}
}

具体来说,
这个被称为索引器的[string key]
是什么意思。您可以阅读:

索引器允许类或结构的实例像数组一样被索引。索引器与属性相似,只是它们的访问器采用参数

基本上,这允许您使用索引访问元素。因此,在这种情况下,您可以访问
NullableDictionnary
元素,如下所示:

NullableDictionnary[key]
应该是
字符串
,因为您的类继承自
字典

通常,如果将空键传递给
字典的索引器
,您将获得
ArgumentNullException
。但在这里,您扩展了此索引器,并在键传递为空时返回默认值。例如,这将抛出
ArgumentNullException

var dict = new Dictionary<string, string>();
Console.WriteLine(dict[null]); // ArgumentNullException
这将写入
null\u value
变量的值。最后注意,您应该将索引器的返回类型更改为
string
,而不是
StringDictionary
,否则它将无法编译

 public string this[string key]

这是一个索引器属性。基本上提供[]运算符的实现。更多信息,请参见

这被称为A,这可能很难在谷歌上搜索,您可以使用它进行搜索,查看for
This[string key]C
 public string this[string key]