다음은 선택적 기본값을 전달할 수있는 C # 7.1 세계 용 @JonSkeet 버전입니다.
public static TV GetValueOrDefault<TK, TV>(this IDictionary<TK, TV> dict, TK key, TV defaultValue = default) => dict.TryGetValue(key, out TV value) ? value : defaultValue;
반환하려는 경우를 최적화하기 위해 두 가지 기능을 갖는 것이 더 효율적일 수 있습니다 default(TV)
.
public static TV GetValueOrDefault<TK, TV>(this IDictionary<TK, TV> dict, TK key, TV defaultValue) => dict.TryGetValue(key, out TV value) ? value : defaultValue;
public static TV GetValueOrDefault2<TK, TV>(this IDictionary<TK, TV> dict, TK key) {
dict.TryGetValue(key, out TV value);
return value;
}
불행히도 C #에는 (아직?) 쉼표 연산자 (또는 C # 6 제안 세미콜론 연산자)가 없으므로 과부하 중 하나에 대한 실제 함수 본문 (gasp!)이 있어야합니다.