【发布时间】:2010-11-08 11:05:45
【问题描述】:
我有这样的课:
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];
}
}
}
现在,如果我这样做......
var someClass = new SomeClass();
var p = someClass.Privileges[13];
...而且没有key 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 语言功能。
如何以相同的方式访问属性,但如果键不存在则获取默认对象?
【问题讨论】:
标签: c# .net dictionary properties indexer