在C#中,表达式a[b]代表什么?

3
我经常在维护代码中看到这个表达式。
Global["Name"]

这代表什么?我使用过 Global.Name 但从未用过 Global["Name"] ?

这种表达式在哪些地方会被用到呢?

3个回答

8

这被称为一个索引器。在这种情况下,Global可能是一种字典或哈希表。而"Name"则是访问该字典中特定项的键。


3

在查找包含键/值对的字典和集合时使用它,例如。

var peopleAges = new System.Collections.Generic.Dictionary<string, int>();
peopleAges["fred"] = 21;
peopleAges["emma"] = 18;

var fredAge = peopleAges["fred"];  // returns 21

0

这是 C# 允许的一种简写形式,称为默认属性。当一个类设置了 DefaultMemberAttribute 属性时,C# 允许在使用该属性时省略该属性名称。


不行。这仅适用于索引器,即使将其定义为默认成员,也不能省略属性。 - Thomas Levesque
如果属性具有参数,并且属性的名称或其访问器之一与DefaultMemberAttribute指定的名称匹配,则将该属性作为索引器(Visual Basic中的默认索引属性)导入。 C#会自动透明地执行此操作,因此您无需定义该属性。我称其为默认属性,因为我曾经在遥远的过去使用过VB.NET。 - Lunatic Experimentalist

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接