Null 검사를 간소화할 수 있습니다(IDE0029, IDE0030 및 IDE0270).
이 문서에서는 IDE0029
, IDE0030
및 IDE0270
세 가지 관련 규칙을 설명합니다.
재산 | 값 |
---|---|
규칙 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일 수 없는 식이 관련될 때 사용됩니다. 예를 들어, 이 규칙은x
및y
이 null이 불가능한 참조 형식인 경우,x != null ? x : y
대신x ?? y
을 권장할 수 있습니다. -
IDE0030
: nullable 표현식이 관련될 때 사용됩니다. 예를 들어 이 규칙은x
및y
가 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
자세한 내용은 코드 분석 경고표시하지 않는 방법을 참조하세요.
또한 참조
GitHub에서 Microsoft와 공동 작업
이 콘텐츠의 원본은 GitHub에서 찾을 수 있으며, 여기서 문제와 끌어오기 요청을 만들고 검토할 수도 있습니다. 자세한 내용은 참여자 가이드를 참조하세요.
.NET