Short-Circuit Evaluation
Coddy'nin C# Journey'sinin Mantık & Akış bölümünün bir parçası — ders 36 / 66.
Kısa devre değerlendirmesi, C#'ta mantıksal AND (&&) ve OR (||) operatörlerinin ikinci operandının yalnızca gerektiğinde değerlendirildiği bir optimizasyon tekniğidir.
Mantıksal VE (&&) için, ilk iş operandı false ise, ikinci iş operandı ne olursa olsun sonuç her zaman false olur:
bool result = false && SomeMethod();Bu örnekte, SomeMethod() çağrılmayacak çünkü ilk iş operandı zaten false.
Mantıksal OR (||) için, ilk işlenen true ise, ikinci işlenenden bağımsız olarak sonuç her zaman true olur:
bool result = true || SomeMethod();Burada, SomeMethod() çağrılmayacak çünkü ilk iş operandı zaten true.
Bu davranış, hataları önlemek için kullanılabilir, örneğin bir nesnenin özelliklerine erişmeden önce null olup olmadığını kontrol etmek gibi:
// Safe - if student is null, the right side won't evaluate
if (student != null && student.Grade > 70)
{
Console.WriteLine("Student passed!");
}Görev
KolayProcessUserInput adında bir metot oluşturun, iki argüman alsın:
- Bir string (
input) - Bir tamsayı (
minLength)
Metot şunları yapmalıdır:
- Girişin null olmadığını kontrol edin
- Giriş uzunluğunun en az
minLengtholduğunu kontrol edin - Sadece her iki koşul da doğruysa, "Valid input: " yazdırın ardından girişi ekleyin
- Herhangi bir koşul başarısız olursa, "Invalid input" yazdırın
Olası bir NullReferenceException'ı önlemek için kısa devre değerlendirmesini kullanın.
Kopya kağıdı
Kısa devre değerlendirme, mantıksal operatörlerin ikinci operand'ının yalnızca gerektiğinde değerlendirildiği bir optimizasyon tekniğidir.
Mantıksal VE (&&) için, birinci operand false ise, ikinci operand değerlendirilmez:
bool result = false && SomeMethod(); // SomeMethod() çağrılmayacakMantıksal VEYA (||) için, birinci operand true ise, ikinci operand değerlendirilmez:
bool result = true || SomeMethod(); // SomeMethod() çağrılmayacakBu, koşulları sırayla kontrol ederek hataları önler:
// Güvenli - student null ise, student.Grade erişilmeyecek
if (student != null && student.Grade > 70)
{
Console.WriteLine("Student passed!");
}Kendin dene
using System;
class ProcessUserInput
{
public static void processUserInput(string input, int minLength)
{
// Buraya kodunuzu yazın
}
}Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Mantık & Akış bölümündeki tüm dersler
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