또 다른 두 가지 C# 관용구 - 3부
항목을 추가하기 전에 사전에 항목이 포함되어 있는지 확인하는 대신 TryAdd를 사용하십시오.
TryAdd
항목이 사전에 추가되었는지 여부를 반환합니다. Add
와 달리 주어진 키가 이미 사전에 있으면 TryAdd
예외가 발생하지 않습니다. 그것은 단순히 아무것도하지 않을 것입니다. 항목이 이미 있습니다.전에,
var myDictionary = new Dictionary<string, string>();
myDictionary.Add("foo", "bar");
// System.ArgumentException: An item with the same key has already been added. Key: foo
myDictionary.Add("foo", "baz");
후에,
var myDictionary = new Dictionary<string, string>();
if (!myDictionary.ContainsKey("foo"))
myDictionary.Add("foo", "bar");
더 나은,
var myDictionary = new Dictionary<string, string>();
myDictionary.TryAdd("foo", "bar"); // true
myDictionary.Add("foo", "baz");
myDictionary.TryAdd("foo", "bar"); // false
TryGetValue 또는 GetValueOrDefault로 KeyNotFoundException 방지
적어도 지금은
KeyNotFoundException
메시지에 찾을 수 없는 키의 이름이 포함되어 있습니다. 찾을 수 없는 열쇠를 쫓던 시대는 끝났습니다.한편으로
TryGetValue
는 찾은 값과 함께 출력 매개변수를 사용합니다. 사전에 항목이 포함되지 않은 경우 기본값을 출력합니다. TryGetValue
튜플이 없던 시절로 거슬러 올라갑니다.반면에
GetValueOrDefault
는 기본값을 반환하거나 키를 찾을 수 없는 경우 제공한 값을 반환합니다.전에,
var dict = new Dictionary<string, string>();
// System.Collections.Generic.KeyNotFoundException: The given key 'foo' was not present in the dictionary.
dict["foo"];
후에,
var dict = new Dictionary<string, string>();
dict.TryGetValue("foo", out var foo); // false, foo -> null
dict.Add("foo", "bar");
dict.TryGetValue("foo", out foo); // true, foo -> "bar"
더 나은,
var dict = new Dictionary<string, string>();
dict.GetValueOrDefault("foo"); // null
dict.GetValueOrDefault("foo", "withoutFoo"); // "withoutFoo"
dict.Add("foo", "bar");
dict.GetValueOrDefault("foo", "withoutFoo"); // "bar"
즐거운 코딩!
Reference
이 문제에 관하여(또 다른 두 가지 C# 관용구 - 3부), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/canro91/another-two-c-idioms-part-3-50og텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)