C#属性语法此[]
在搜索与Java的Hashmap等价的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 ==
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]