다음을 통해 공유


Null 검사를 간소화할 수 있습니다(IDE0029, IDE0030 및 IDE0270).

이 문서에서는 IDE0029, IDE0030IDE0270세 가지 관련 규칙을 설명합니다.

재산
규칙 ID IDE0029
타이틀 Null 검사를 삼항 조건 연산자로 간소화할 수 있음
범주 스타일
하위 범주 언어 규칙(표현 수준의 선호)
적용 가능한 언어 C# 및 Visual Basic
옵션 dotnet_style_coalesce_expression
재산 가치
규칙 ID IDE0030
제목 Null 검사를 간소화할 수 있습니다(null 가능 삼항 조건 검사)
범주 스타일
하위 범주 언어 규칙(식 수준 기본 설정)
적용 가능한 언어 C# 및 Visual Basic
옵션 dotnet_style_coalesce_expression
재산
규칙 ID IDE0270
제목 Null 검사를 간소화할 수 있습니다(null 검사인 경우).
범주 스타일
하위 범주 언어 규칙(표현 수준 선호 설정)
적용 가능한 언어 C# 및 Visual Basic
옵션 dotnet_style_coalesce_expression

개요

규칙 IDE0029 및 IDE0030은 예를 들어, x ?? y와 같은 null 병합 식의 사용과 x != null ? x : y와 같은 3항 조건 식에서 null 검사를 사용하는 경우와 관련이 있습니다. 표현식의 빈 값 허용 여부에 따라 규칙이 다릅니다.

  • IDE0029: null일 수 없는 식이 관련될 때 사용됩니다. 예를 들어, 이 규칙은 xy이 null이 불가능한 참조 형식인 경우, x != null ? x : y 대신 x ?? y을 권장할 수 있습니다.
  • IDE0030: nullable 표현식이 관련될 때 사용됩니다. 예를 들어 이 규칙은 xy가 nullable 값 형식 이거나 nullable 참조 형식 인 경우, x != null ? x : y 대신 x ?? y을 권장할 수 있습니다.

규칙 IDE0270는 null 검사(== null 또는 is null) 대신 null 병합 연산자 (??)를 사용하도록 권장함을 나타냅니다.

옵션

옵션은 규칙을 적용할 동작을 지정합니다. 옵션 구성에 대한 자세한 내용은 옵션 형식참조하세요.

dotnet_style_coalesce_expression

재산 가치 묘사
옵션 이름 dotnet_style_coalesce_expression
옵션 값 true null 병합 식을 선호합니다.
false 규칙을 사용하지 않도록 설정합니다.
기본 옵션 값 true

예제

IDE0029 및 IDE0030

// Code with violation.
var v = x != null ? x : y; // or
var v = x == null ? y : x;

// Fixed code.
var v = x ?? y;
' Code with violation.
Dim v = If(x Is Nothing, y, x) ' or
Dim v = If(x IsNot Nothing, x, y)

' Fixed code.
Dim v = If(x, y)

IDE0270

// Code with violation.
class C
{
    void M()
    {
        var item = FindItem() as C;
        if (item == null)
            throw new System.InvalidOperationException();
    }

    object? FindItem() => null;
}

// Fixed code (dotnet_style_coalesce_expression = true).
class C
{
    void M()
    {
        var item = FindItem() as C ?? throw new System.InvalidOperationException();
    }

    object? FindItem() => null;
}
' Code with violation.
Public Class C
    Sub M()
        Dim item = TryCast(FindItem(), C)
        If item Is Nothing Then
            item = New C()
        End If
    End Sub

    Function FindItem() As Object
        Return Nothing
    End Function
End Class

' Fixed code (dotnet_style_coalesce_expression = true).
Public Class C
    Sub M()
        Dim item = If(TryCast(FindItem(), C), New C())
    End Sub

    Function FindItem() As Object
        Return Nothing
    End Function
End Class

경고 표시 안 함

단일 위반만 표시하지 않으려면 소스 파일에 전처리기 지시문을 추가하여 규칙을 사용하지 않도록 설정한 다음 다시 사용하도록 설정합니다.

#pragma warning disable IDE0029 // Or IDE0030 or IDE0270
// The code that's violating the rule is on this line.
#pragma warning restore IDE0029 // Or IDE0030 or IDE0270

파일, 폴더 또는 프로젝트에 대한 규칙을 사용하지 않도록 설정하려면 해당 심각도를 구성 파일none 설정합니다.

[*.{cs,vb}]
dotnet_diagnostic.IDE0029.severity = none
dotnet_diagnostic.IDE0030.severity = none
dotnet_diagnostic.IDE0270.severity = none

모든 코드 스타일 규칙 전체를 비활성화하려면 구성 파일에서 범주 Style의 심각도를 none로 설정하는 방법은 다음과 같습니다.

[*.{cs,vb}]
dotnet_analyzer_diagnostic.category-Style.severity = none

자세한 내용은 코드 분석 경고표시하지 않는 방법을 참조하세요.

또한 참조