我有这样的课:
public class SomeClass
{
private const string sessionKey = "__Privileges";
public Dictionary<int, Privilege> Privileges
{
get
{
if (Session[sessionKey] == null)
{
Session[sessionKey] = new Dictionary<int, Privilege>();
}
return (Dictionary<int, Privilege>)Session[sessionKey];
}
}
}
现在,如果 Ido 这个...
var someClass = new SomeClass();
var p = someClass.Privileges[13];
...并且没有键 13,我会收到如下错误:
The given key was not present in the dictionary.
我想要一个可以以与上面相同的方式访问的属性,但在缺少键的情况下将返回一个默认对象。
我尝试创建这样的索引器属性...
public Privilege Privileges[int key]
{
get
{
try { return _privileges[key]; }
catch { return new Privilege(); }
}
}
...但看起来这不是 C# 2008 语言功能。
如何以相同的方式访问该属性,但如果密钥不存在则获取默认对象?