다음을 통해 공유


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

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

속성
규칙 ID IDE0029
제목 Null 검사 간소화할 수 있음(3항 조건부 검사)
범주 스타일
하위 범주 언어 규칙(식 수준 기본 설정)
해당 언어 C# 및 Visual Basic
옵션 dotnet_style_coalesce_expression
속성
규칙 ID IDE0030
제목 Null 검사 간소화할 수 있습니다(nullable 3nary 조건부 검사).
범주 스타일
하위 범주 언어 규칙(식 수준 기본 설정)
해당 언어 C# 및 Visual Basic
옵션 dotnet_style_coalesce_expression
속성
규칙 ID IDE0270
제목 Null 검사 간소화할 수 있습니다(null이 검사 경우).
범주 스타일
하위 범주 언어 규칙(식 수준 기본 설정)
해당 언어 C# 및 Visual Basic
옵션 dotnet_style_coalesce_expression

개요

규칙 IDE0029 및 IDE0030은 null 병합 식(예: x ?? y)의 사용과 검사를 사용하는 3차 조건식(예x != null ? x : y: )과 관련이 있습니다null. 규칙은 식의 null 허용 가능성과 관련이 있습니다.

  • IDE0029: nullable이 아닌 식이 관련될 때 사용됩니다. 예를 들어 이 규칙은 및 y 가 nullable이 아닌 참조 형식인 경우 x 대신 x != null ? x : y 권장 x ?? y 할 수 있습니다.
  • IDE0030: nullable 식이 관련될 때 사용됩니다. 예를 들어 이 규칙은 및 ynullable 값 형식 또는 nullable 참조 형식인 경우 x 대신 x != null ? x : y 권장 x ?? y할 수 있습니다.

규칙 IDE0270은 null 병합 연산자() 대신 null 검사(??== null 또는 is 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

자세한 내용은 방법: 코드 분석 경고 표시 안 함을 참조하세요.

참고 항목