Short-Circuit Evaluation
Coddy C# 여정의 논리 및 흐름 섹션에 포함된 레슨 — 66개 중 36번째.
C#에서 단락 평가(Short-circuit evaluation)는 논리 AND(&&)와 OR(||) 연산자의 두 번째 피연산자를 필요한 경우에만 평가하는 최적화 기법입니다.
논리 AND(&&)의 경우, 첫 번째 피연산자가 false이면 두 번째 피연산자에 관계없이 결과는 항상 false입니다:
bool result = false && SomeMethod();이 예제에서 SomeMethod()는 첫 번째 피연산자가 이미 false이기 때문에 호출되지 않습니다.
논리 OR(||)의 경우, 첫 번째 피연산자가 true이면 두 번째 피연산자에 관계없이 결과는 항상 true입니다:
bool result = true || SomeMethod();여기서, SomeMethod()는 첫 번째 피연산자가 이미 true이기 때문에 호출되지 않습니다.
이 동작은 오류를 방지하는 데 사용할 수 있으며, 예를 들어 객체의 속성에 접근하기 전에 해당 객체가 null인지 확인하는 경우입니다:
// Safe - if student is null, the right side won't evaluate
if (student != null && student.Grade > 70)
{
Console.WriteLine("Student passed!");
}챌린지
쉬움ProcessUserInput이라는 이름의 메서드를 생성하세요. 이 메서드는 두 개의 인수를 받습니다:
- 문자열 (
input) - 정수 (
minLength)
메서드는 다음을 수행해야 합니다:
- input이 null이 아닌지 확인
- input 길이가 최소
minLength이상인지 확인 - 두 조건이 모두 참인 경우에만 "Valid input: " 다음에 input을 출력
- 어느 한 조건이라도 실패하면 "Invalid input"을 출력
잠재적인 NullReferenceException을 방지하기 위해 단락 평가를 사용하세요.
치트 시트
단락 평가(Short-circuit evaluation)는 논리 연산자의 두 번째 피연산자를 필요할 때만 평가하는 최적화 기법입니다.
논리 AND(&&)의 경우, 첫 번째 피연산자가 false이면 두 번째 피연산자는 평가되지 않습니다:
bool result = false && SomeMethod(); // SomeMethod() won't be called논리 OR(||)의 경우, 첫 번째 피연산자가 true이면 두 번째 피연산자는 평가되지 않습니다:
bool result = true || SomeMethod(); // SomeMethod() won't be called이것은 조건을 순서대로 확인함으로써 오류를 방지합니다:
// Safe - if student is null, student.Grade won't be accessed
if (student != null && student.Grade > 70)
{
Console.WriteLine("Student passed!");
}직접 해보기
using System;
class ProcessUserInput
{
public static void processUserInput(string input, int minLength)
{
// 여기에 코드를 작성하세요
}
}이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
논리 및 흐름의 모든 레슨
1Multi-dimensional Arrays
2D Arrays BasicsDeclaring and Initializing 2DAccessing 2D Array ElementsNested Loops with 2D ArraysJagged ArraysCommon Matrix OperationsRecap - Multi-dimensional4Flow Control Techniques
Early ReturnsGuard ClausesJump Statements (goto)Break and ContinueFlatten Nested Conditionals7Logical Operators Advanced
Short-Circuit EvaluationConditional Logical OperatorsOperator PrecedenceRecap - Advanced Operators2Advanced Decision Making
Multiple ConditionsComplex Boolean LogicIf vs. Switch ComparisonNested Switch StatementsRecap - Advanced Decisions5Exception Handling
Try-Catch BasicsException TypesMultiple Catch BlocksWorking with FilesFinally BlockUsing vs. Try-FinallyCustom ExceptionsRecap - Error Handling3Loop Enhancements
Loop PerformanceIterating ComplexEach Loop TypeRefactoring LoopsRecap - Optimized Loops6Null Handling
Null Reference BasicsNullable Value TypesNull Checking PatternsDefensive ProgrammingRecap - Null Safety