0Pricing
C# Academy · 강의

관계형 및 논리 패턴

패턴에서 조건을 결합해 보세요.

관계형 및 논리 패턴은(는) CoddyKit의 무료 C# Academy 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 C# Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. C# Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

관계형 패턴

관계형 패턴은 <, >, <= 또는 >=를 사용하여 입력값을 상수와 비교합니다. 비교 결과가 참일 때 일치합니다.

C# 9에서 도입된 관계형 패턴을 사용하면 명시적인 비교를 작성하지 않고도 스위치 분기와 is 식에서 범위 확인을 간결하게 표현할 수 있습니다.

int temp = 18;
string level = temp switch
{
    < 0  => "freezing",
    < 15 => "cold",
    < 25 => "mild",
    _    => "hot"
};
System.Console.WriteLine(level);

is 식을 사용한 관계형 패턴

관계형 패턴은 is 식에서도 사용할 수 있어 읽기 쉬운 부울 확인을 제공합니다.

n is > 0은 영어 문장처럼 거의 읽히며, 조건문이나 할당문 또는 LINQ 조건자에서 사용할 수 있는 bool을 반환합니다.

using System;

class Program {
    static void Main() {
        int score = 82;
        bool passed = score is >= 60;
        Console.WriteLine(passed);
    }
}

and 패턴

and 논리 패턴은 두 하위 패턴이 모두 일치해야 합니다. 따라서 범위를 제한할 때 적합합니다.

>= 1 and <= 12는 양 끝값을 포함하는 범위 안의 값과 일치합니다. and가 없다면 하나의 패턴에서 양쪽 경계를 표현할 수 없습니다.

int month = 6;
bool valid = month is >= 1 and <= 12;
System.Console.WriteLine(valid);

or 패턴

or 논리 패턴은 하위 패턴 중 하나라도 일치하면 일치합니다. 여러 대체 값을 하나의 분기로 묶습니다.

서로 관련된 경우마다 분기를 반복하는 대신 'a' or 'e' or 'i'처럼 작성하여 하나로 합칠 수 있습니다. 이렇게 하면 스위치 식이 간결해지고 의도가 잘 드러납니다.

char c = 'e';
string kind = c switch
{
    'a' or 'e' or 'i' or 'o' or 'u' => "vowel",
    _ => "consonant"
};
System.Console.WriteLine(kind);

not 패턴

not 논리 패턴은 하위 패턴과 일치하지 않을 때 일치합니다. 가장 일반적인 사용법은 not null입니다.

또한 not 0이나 not (> 100)처럼 다른 패턴을 부정할 수도 있으므로, 하나의 분기 안에서 제외 조건을 명확하게 표현할 수 있습니다.

object? value = "hi";
if (value is not null)
    System.Console.WriteLine("present");

논리 패턴 결합하기

논리 패턴은 서로 결합할 수 있습니다. 괄호로 우선순위를 조절하면서 and, or, not을 연결하여 복잡한 조건을 만들 수 있습니다.

우선순위는 not이 가장 높고, 그다음이 and, 마지막이 or입니다. 의도가 모호할 수 있는 경우에는 언제나 괄호를 추가하세요.

using System;

class Program {
    static string Classify(int n) => n switch {
        < 0 or > 100 => "out of range",
        >= 0 and <= 50 => "low half",
        _ => "high half"
    };
    static void Main() => Console.WriteLine(Classify(75));
}

성적 평가에서의 범위

관계형 패턴과 논리 패턴을 함께 사용하면 기존의 성적 평가표를 깔끔하게 표현할 수 있습니다.

분기는 위에서 아래 순서로 확인되므로 간단한 상한을 사용하거나, and로 경계를 결합하여 명시적인 범위를 만들 수 있습니다. 두 방식 모두 유효하므로 더 명확한 방식을 선택하세요.

using System;

class Program {
    static char Grade(int s) => s switch {
        >= 90 => 'A',
        >= 80 and < 90 => 'B',
        >= 70 and < 80 => 'C',
        _ => 'F'
    };
    static void Main() => Console.WriteLine(Grade(85));
}

속성 패턴에서의 not null

not null을 형식 및 속성 패턴과 결합하면 안전하고 표현력이 높은 가드를 만들 수 있습니다.

obj is Person { Name: not null } p는 널이 아니고 이름도 널이 아닌 Person과 일치하며 이를 바인딩합니다. 따라서 여러 단계의 널 확인을 피할 수 있습니다.

record Person(string? Name);

object obj = new Person("Kai");
if (obj is Person { Name: not null } p)
    System.Console.WriteLine(p.Name);

범위 부정하기

not과 괄호를 사용하면 관계형 패턴 그룹을 부정하여 제외 조건을 표현할 수 있습니다.

not (>= 1 and <= 5)는 1부터 5까지의 범위 밖에 있는 모든 값과 일치합니다. 일부 독자에게는 이에 해당하는 < 1 or > 5보다 이 표현이 더 직접적으로 읽힐 수 있습니다.

using System;

class Program {
    static void Main() {
        int n = 9;
        bool outside = n is not (>= 1 and <= 5);
        Console.WriteLine(outside);
    }
}

형식 패턴과 함께 사용하기

논리 패턴은 형식 패턴과도 결합할 수 있습니다. o is int or long은 정수 계열 숫자 형식을 한 번에 확인하여 일치시킵니다.

서로 관련된 여러 형식을 동일하게 처리할 때 유용합니다. 단, or의 양쪽 형식이 결과 사용 방식과 호환되어야 한다는 점에 유의하세요.

object o = 5L;
string kind = o switch
{
    int or long => "integral",
    float or double => "floating",
    _ => "other"
};
System.Console.WriteLine(kind);

가독성 지침

논리 패턴은 표현력이 뛰어나지만 복잡해질 수 있습니다. 분기 패턴을 짧게 유지하고, and를 사용하는 범위 표현을 우선하며, 명확성을 위해 and/or를 함께 사용할 때는 괄호로 묶으십시오.

조건에 절이나 외부 변수가 많이 필요하다면 긴 논리 패턴보다 when 조건식이 더 읽기 쉬울 수 있습니다. 의도를 더 잘 전달하는 쪽을 선택하십시오.

int n = 42;
string r = n switch
{
    > 0 and < 10 when n % 2 == 0 => "small even",
    _ => "other"
};
System.Console.WriteLine(r);

빠른 확인

관계형 패턴과 논리 패턴에 대한 이해를 점검해 보십시오.

복습

관계형 패턴(< > <= >=)은 상수와 비교합니다. 논리 패턴은 and, or, not으로 하위 패턴을 결합합니다.

연산자 우선순위는 not, and, or 순서입니다. 여러 연산자를 함께 사용할 때는 괄호로 묶으십시오. 다음에는 목록 패턴과 튜플 패턴을 살펴보겠습니다.

자주 묻는 질문

“관계형 및 논리 패턴” 강의는 무료인가요?

네 — “관계형 및 논리 패턴” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 C# Academy 강의 전체를 잠금 해제할 수 있습니다. C# Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“관계형 및 논리 패턴”에서 뭘 배우나요?

패턴에서 조건을 결합해 보세요. 브라우저에서 직접 실행하는 실습 코드로 C# Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

C# Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 C# Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.

“관계형 및 논리 패턴” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 C# Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 C# Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. switch 식
  2. 형식 및 속성 패턴
  3. 관계형 및 논리 패턴
  4. 목록 및 튜플 패턴
← C# Academy(으)로 돌아가기