Null 검사 간소화할 수 있습니다(IDE0029, IDE0030 및 IDE0270).
이 문서에서는 , IDE0030
및 IDE0270
의 세 가지 관련 규칙에 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 식이 관련될 때 사용됩니다. 예를 들어 이 규칙은 및y
가 nullable 값 형식 또는 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
자세한 내용은 방법: 코드 분석 경고 표시 안 함을 참조하세요.
참고 항목
GitHub에서 Microsoft와 공동 작업
이 콘텐츠의 원본은 GitHub에서 찾을 수 있으며, 여기서 문제와 끌어오기 요청을 만들고 검토할 수도 있습니다. 자세한 내용은 참여자 가이드를 참조하세요.
.NET