초보자를 위한 C#의 패턴 일치
12894 단어 dotnetcsharpproductivity
프리미티브는 여전히 if/else와 정렬해야 하지만 자신의 데이터를 포함하여 모든 유형의 데이터에서 패턴 일치를 수행할 수 있습니다. 또한 패턴 일치는 표현식 값을 추출합니다.
이 블로그에서는 몇 가지 패턴 일치 기능에 대해 간략하게 설명합니다.
is 유형 패턴 표현식
is 형식 식은 C#에서 지정된 type.is 형식 패턴 일치와 개체의 호환성을 테스트하여 제어 흐름에서 형식을 사용할 수 있도록 하며 사용된 논리는 형식 기반 대 리터럴 값입니다.
다음 코드 예제를 고려하십시오. 이 코드는 수학, 과학 및 영어의 세 가지 클래스를 정의합니다.
public class Mathematics
{
public double Score { get; set; }
public string GetSubjectDetails() => "Mathematics class";
}
public class Science
{
public double Score { get; set; }
public string GetSubjectDetails() => "Science class";
}
public class English
{
public double Score { get; set; }
public string GetSubjectDetails() => "English class";
}
이제 is 유형을 사용하여 주제 유형에 대해 코딩할 수 있습니다. 다음 코드 스니펫은 예제를 제공합니다.
public static string GetSubjectDetails (object subject)
{
if (subject is English e)
return e.GetSubjectDetails ();
if (subject is Science s)
return s.GetSubjectDetails ();
if (subject is Mathematics m)
return m.GetSubjectDetails ();
throw new ArgumentException("unsupported subject type", nameof(subject));
}
is 표현식은 변수를 확인하고 적합한 새로운 유형의 변수에 할당합니다. *is* 유형 표현식은 값과 참조 유형 모두에서 작동합니다.
Switch 문
고정 값 대신 switch case 문 패턴은 switch 값을 표현식에서 반환된 다른 값과 비교할 수 있도록 하여 케이스 블록을 개선합니다.
값을 확인하고 조건 확인을 기반으로 일부 작업을 수행하기 위해 when/case 표현식을 사용하여 이를 수행할 수 있습니다.
public static string GetSubjectScore(object subject)
{
switch (subject)
{
case Mathematics m when m.Score >= 90:
//Go to the grade calculation.
case Science s:
//Get the subject details.
case var sub when (sub.Equals(100)):
//Got the centum.
case null:
//Code logic go here.
default:
throw new ArgumentException("Unsupported subject type", nameof(subject));
}
}
위의 예에서 null, default, 유형 검사, 조건 및 유형 검사가 없는 조건의 사용( case var )에 대한 case 문을 볼 수 있습니다. case var 도 null 과 일치할 수 있으므로 이를 방지하기 위해 case null 아래에 넣습니다.
고전적인 스위치 인수에서는 상수만 허용되었습니다. 패턴 매칭에서 패턴 케이스의 순서는 동적 조건으로 인해 중요합니다.
스위치 표현식은 C# 8.0에 추가되었습니다. 스위치 표현식은 다른 값을 기반으로 특정 결과를 반환하는 짧은 접근 방식입니다. switch 표현식에는 case 키워드가 필요하지 않습니다. 화살표( => )는 콜론( : )을 대신합니다. _(밑줄)는 키워드 기본값을 대체합니다.
다음 코드 스니펫은 스위치 표현식을 사용하여 주제 점수를 계산합니다.
var (score1, score2, option) = (50, 40, “+”);
var score = option switch
{
“+” => score1 + score2,
“-” => score1 - score2,
_ => 0
};
Console.WriteLine("Score Details: " + score);
관계형 및 논리적 패턴
C# 9 버전은 관계형 및 논리적 패턴을 지원합니다.
관계 연산자 < , >, <= 및 >=를 사용할 수 있습니다. 관계형 패턴에서 범위를 표현하려면 to 키워드를 사용하십시오.
and, or, not과 같은 논리 연산자를 사용할 수 있습니다.
관계형 및 논리적 패턴을 사용하여 다음 코드는 과목 등급을 표시합니다.
var subjectScore = 90;
var grade = subjectScore switch
{
100 => “Grade O”,
>= 90 and <= 99 => “Grade A”,
75 to 89 => “Grade B”,
> 60 => “Grade C”
};
Console.WriteLine("Subject Grade: " + grade);
결론
이 블로그 게시물에서 패턴 일치에 대한 C#의 지원을 살펴보았습니다. 패턴 일치는 모든 데이터 유형에서 작동합니다. 표현식을 테스트하고 표현식이 일치할 때 조치를 취하기 위한 보다 간결한 구문을 제공합니다. C#에서 이러한 패턴 일치 개념을 시도하고 생산성을 향상시키십시오!
Syncfusion has over 1,600 components and frameworks for .NET MAUI(Preview) , WinForms , WPF , WinUI , ASP.NET ( Web Forms , MVC , Core ), UWP , Xamarin , Flutter , JavaScript , Angular , Blazor , Vue , and React . 이를 사용하여 애플리케이션 개발 속도를 높이십시오.
우려 사항이 있거나 설명이 필요한 경우 아래 의견 섹션에 언급하십시오. support forums , Direct-Trac 또는 feedback portal 을 통해 연락할 수도 있습니다.
관련 블로그
Reference
이 문제에 관하여(초보자를 위한 C#의 패턴 일치), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/syncfusion/pattern-matching-in-c-for-beginners-5e8g텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)