나는이 같은 클래스가 : 지금 ...이 이도의 경우C# 인덱서 재산권 질문
var someClass = new SomeClass();
var p = someClass.Privileges[13];
을
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];
}
}
}
을 ... 더 키 (13)가 없다, 나는를 얻을 것이다 이 같은 오류 :
The given key was not present in the dictionary.
, BU 키가없는 경우 기본 객체를 반환합니다.
나는이 같은 인덱서 속성을 만드는 시도...
public Privilege Privileges[int key]
{
get
{
try { return _privileges[key]; }
catch { return new Privilege(); }
}
}
...하지만 그것은 C#을 2008 언어 기능이 아니다 것 같습니다.
같은 방법으로 속성에 액세스 할 수 있지만 키가없는 경우 기본 개체를 가져 오는 방법은 무엇입니까?
을 생각. 이것은 프로그램을 디버그하기 어렵게 만듭니다. 왜냐하면 종종 첫 번째 예외 추적을 사용하여 디버깅하기를 원하기 때문에 많은 예외가 있기 때문에 더 느리게 처리됩니다. 따라서 프로그램의 속도가 느려지고 예외가 예상되는 설계상의 사실에 반하여 작동합니다. 예외적이다. 키가 존재하는지 여부를 먼저 확인하고 시도하지 않고 예외를 잡는 것이 훨씬 좋습니다. –
@ Eric : 매우 공정한 점 - 내가 답장을 게시하기 전에 나는 그것을 알고 있었다. 그러나 문제는 질문의 속성/인덱서 측면에 더 관련되어있었습니다. 원래 질문에 대한 의견을 게시해야합니다. – Noldorin