访问专用词典
本文关键字:专用词 访问 | 更新日期: 2023-09-27 18:26:32
我们有一个带有公共字典的类:
public class SomethingWithADictionary {
public Dictionary<string, Instance> Instances { get; set; }
}
目前,我们直接访问这本词典,如下所示:
Instance inst = a.Instances["key"];
我们希望使dictionary成为私有的,但有一种公共方式可以使用相同的索引器语法访问dictionary元素。原因是,如果实例不在字典中,我们希望采取一些操作,而不仅仅是抛出一个错误。
你是怎么做到的?
它必须是完全相同的语法吗?如果你不介意访问它作为:
Instance inst = a["key"];
那么就很容易了——你只需要添加一个索引器:
public class SomethingWithADictionary {
private Dictionary<string, Instance> instances =
new Dictionary<string, Instance>();
public Instance this[string key]
{
get
{
Instance instance;
if (!instances.TryGetValue(key, out instance))
{
// Custom logic here
}
return instance;
}
// You may not even want this...
set { instances[key] = value; }
}
}
索引属性是最好的选择。这应该做到:
public class SomethingWithADictionary {
private Dictionary<string, Instance> Instances { get; set; }
[System.Runtime.CompilerServices.IndexerNameAttribute("Instances")]
public Instance this [String skillId]{
// Add getters and setters to manipulate Instances dictionary
}
}