C#에서 제네릭을 활용한 In과 NotIn 확장 메서드를 만드는 방법입니다.
데이터가 특정 배열이나 컬렉션 내에 포함되는지 여부를 간단히 확인할 수 있도록 하며, 데이터베이스의 IN, NOT IN 연산자와 비슷한 기능을 수행한다고 볼 수 있어요. 이 기능은 특히 데이터 필터링이나 검증이 필요할 때 코드의 가독성과 효율성을 높여 줄 것입니다.
C# 제네릭을 이용해 In과 NotIn 메서드를 직접 구현하고, 다양한 예제를 통해 실제 사용 결과를 확인해 보겠습니다.
제네릭을 이용한 In 메서드 구현
먼저 In 메서드는 특정 값이 배열이나 컬렉션에 포함되어 있는지를 확인하여 true 또는 false를 반환하는 기능입니다. SQL에서 흔히 사용하는 IN 조건문과 유사한 역할을 하며, 코드 가독성을 높이는 데 도움을 줍니다.
public static bool In<T>(this T _item, params T[] _items)
{
if (_items == null)
{
throw new ArgumentNullException(nameof(_items), "Items array cannot be null.");
}
return _item != null && _items.Contains(_item);
}
_item이null이 아니고_items에 포함되어 있을 때true를 반환합니다._item이나_items가null일 경우 예외 처리를 통해 안전하게 처리할 수 있습니다.
제네릭을 이용한 NotIn 메서드 구현
반대로 NotIn 메서드는 특정 값이 배열이나 컬렉션에 포함되지 않았는지를 확인하여 true 또는 false를 반환합니다. In 메서드와 반대 역할을 수행하며, 조건 검증에 유용하게 사용됩니다.
public static bool NotIn<T>(this T _item, params T[] _items)
{
if (_items == null)
{
throw new ArgumentNullException(nameof(_items), "Items array cannot be null.");
}
return _item != null && !_items.Contains(_item);
}
_item이_items배열에 존재하지 않을 때true를 반환합니다.null값에 대한 안전한 처리를 통해 오류 발생 가능성을 줄였습니다.
구체적인 예제와 결과
다음 예제는 In과 NotIn 메서드를 사용하여 특정 문자열이 배열에 포함되는지 여부를 확인하는 예제입니다. 각 결과도 함께 확인해 보겠습니다.
string value = string.Empty;
bool result = false;
value = "apple";
// IN 예제 1: 값이 포함되는 경우
result = value.In("apple", "banana", "cherry");
Console.WriteLine(result); // true
// IN 예제 2: 값이 포함 안 되는 경우
result = value.In("grape", "banana", "cherry");
Console.WriteLine(result); // false
// NOT IN 예제 1: 값이 포함되는 경우
result = value.NotIn("apple", "melon", "orange");
Console.WriteLine(result); // false
// NOT IN 예제 2: 값이 포함 안 되는 경우
result = value.NotIn("grape", "melon", "orange");
Console.WriteLine(result); // true
예제 결과 설명
- IN 예제 1:
value가"apple"이고, 배열["apple", "banana", "cherry"]에 포함되어 있으므로In메서드는true를 반환합니다. - IN 예제 2:
value가"apple"이지만, 배열["grape", "banana", "cherry"]에 포함되지 않으므로In메서드는false를 반환합니다. - NOT IN 예제 1:
value가"apple"이고, 배열["apple", "melon", "orange"]에 포함되어 있으므로NotIn메서드는false를 반환합니다. - NOT IN 예제 2:
value가"apple"이며, 배열["grape", "melon", "orange"]에 포함되지 않으므로NotIn메서드는true를 반환합니다.
C# 제네릭 In과 NotIn 메서드 활용의 장점
이처럼 In과 NotIn 메서드는 조건 검증을 단순화하고 코드의 가독성을 높이는 데 큰 역할을 해요. 특히 데이터 검증, 필터링, 조건 체크 등의 상황에서 반복적인 코드 작성을 줄여주며 코드 가독성을 개선하는 데 효과적이에요.
- 가독성 향상: 조건 검증이 필요할 때 직관적으로 사용할 수 있어 코드가 더욱 읽기 쉬워져요.
- 코드 간소화:
if-else와 같은 복잡한 조건문을 줄이고 메서드를 활용해 간결하게 작성할 수 있어요. - 안전성: 제네릭과
null체크를 통한 예외 처리를 포함하여 안정적으로 동작해요.
