0Pricing
C# Academy · Ders

Birleştirilebilirlik ipuçları

LINQ işlemlerini birleştirilebilir tutun: küçük, saf koşul ve dönüşüm işlevleri kullanın, delegate'leri birleştirin, küçük genişletme yardımcıları ekleyin ve IEnumerable işlem hatları döndürün.

Birleştirilebilirlik ipuçları, CoddyKit'te ücretsiz bir C# Academy dersidir. Bu, 3 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, C# Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. C# Academy kursu toplamda 3 dersten oluşur.

Birleştirilebilir LINQ'e genel bakış

Amaç: LINQ'i kolayca genişletilebilir hâle getirmek.

  • Küçük ve saf koşullar/dönüşümler yazın
  • İşlevleri birleştirin (yan etkiler olmadan)
  • Küçük uzantı yardımcıları ekleyin
  • IEnumerable<T> pipeline yapıları döndürün

Yeniden kullanılan saf yardımcılar

Küçük saf yöntemleri ayıklayıp yöntem grupları olarak aktarın. Yeniden kullanım, pipeline yapılarını kısa ve okunabilir tutar.

using System;
using System.Linq;

public class Program
{
  static bool IsEven(int n) { return n % 2 == 0; }   // pure predicate
  static int Square(int n) { return n * n; }         // pure transform

  public static void Main(string[] args)
  {
    int[] xs = new int[] { 1, 2, 3, 4, 5, 6 };

    var q = xs
      .Where(IsEven)     // reuse predicate
      .Select(Square);   // reuse transform

    foreach (int v in q) Console.WriteLine(v); // 4 16 36
  }
}

Koşulları birleştirme

Daha küçük koşulları birleştirerek yeni koşullar oluşturun. Bu, mantığın sınanabilir ve yeniden kullanılabilir olmasını sağlar.

using System;
using System.Linq;

public class Program
{
  // Return a predicate n > threshold
  static Func<int, bool> GreaterThan(int threshold)
  {
    return delegate(int n) { return n > threshold; };
  }

  // Combine two predicates with AND
  static Func<int, bool> And(Func<int, bool> a, Func<int, bool> b)
  {
    return delegate(int n) { return a(n) && b(n); };
  }

  static bool IsEven(int n) { return n % 2 == 0; }

  public static void Main(string[] args)
  {
    int[] xs = new int[] { 1, 2, 3, 4, 5, 6 };

    Func<int, bool> gt2 = GreaterThan(2);
    Func<int, bool> evenAndGt2 = And(IsEven, gt2);

    var q = xs.Where(evenAndGt2); // even and > 2 => 4,6

    foreach (int v in q) Console.WriteLine(v);
  }
}

Okunabilir uzantılar

Niyeti ifade etmek için küçük bir uzantı ekleyin (örneğin WhereNot). Uzantıyı basit ve yan etkisiz tutun.

using System;
using System.Collections.Generic;
using System.Linq;

public static class LinqEx
{
  public static IEnumerable<T> WhereNot<T>(this IEnumerable<T> src, Func<T, bool> predicate)
  {
    foreach (T item in src)
    {
      if (!predicate(item)) yield return item;
    }
  }
}

public class Program
{
  static bool IsVowel(char c)
  {
    char x = Char.ToLower(c);
    return x == 'a' || x == 'e' || x == 'i' || x == 'o' || x == 'u';
  }

  public static void Main(string[] args)
  {
    char[] letters = new char[] { 'a', 'b', 'c', 'e', 'i' };

    var consonants = letters.WhereNot(IsVowel);

    foreach (char c in consonants) Console.WriteLine(c); // b, c
  }
}

Yeniden kullanılabilir pipeline yardımcıları

Yeniden kullanılabilir IEnumerable<T> yardımcıları sunun. Çağıran kod, zinciri birleştirmeye devam edebilir (OrderBy, Take vb.).

using System;
using System.Collections.Generic;
using System.Linq;

public class Program
{
  static bool IsEven(int n) { return n % 2 == 0; }
  static int Square(int n) { return n * n; }

  // Reusable pipeline helper: filter evens and square
  public static IEnumerable<int> SquaresOfEvens(IEnumerable<int> xs)
  {
    foreach (int x in xs)
    {
      if (IsEven(x)) yield return Square(x);
    }
  }

  public static void Main(string[] args)
  {
    int[] data = new int[] { 1, 2, 3, 4, 5, 6 };

    var pipeline = SquaresOfEvens(data); // composable
    var topTwo = pipeline.OrderByDescending(x => x).Take(2);

    foreach (int v in topTwo) Console.WriteLine(v); // 36, 16
  }
}

Birleştirilebilirlik kontrol listesi

İpuçları:

  • Saf yardımcıları tercih edin; Select/Where içinde yan etkilerden kaçının.
  • Koşulları ve dönüşümleri birleştirin; bunları iyi adlandırın.
  • Çağıran kodun zinciri genişletebilmesi için yardımcı yöntemlerden IEnumerable<T> döndürün.
  • Geç somutlaştırın; gerekmedikçe zincirin ortasında ToList kullanmayın.

Birleştirilebilirlik için en iyi uygulama

Kısa kontrol: LINQ pipeline yapılarının birleştirilebilir ve sınanabilir kalmasını en iyi hangi uygulama sağlar?

Özet

Özet: Küçük ve saf yardımcılar ayıklayın, koşulları birleştirin, küçük uzantılar ekleyin ve çağıran kodun zincirlemeye devam edebilmesi için pipeline yapıları döndürün.

Sıkça Sorulan Sorular

“Birleştirilebilirlik ipuçları” dersi ücretsiz mi?

Evet — “Birleştirilebilirlik ipuçları” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve C# Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. C# Academy kursu toplamda 3 dersten oluşur.

“Birleştirilebilirlik ipuçları” dersinde ne öğreneceğim?

LINQ işlemlerini birleştirilebilir tutun: küçük, saf koşul ve dönüşüm işlevleri kullanın, delegate'leri birleştirin, küçük genişletme yardımcıları ekleyin ve IEnumerable işlem hatları döndürün. C# Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

C# Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te C# Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 3 dersinin 3. dersidir.

“Birleştirilebilirlik ipuçları” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu C# Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her C# Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. GroupBy, Join, Aggregate ve projeksiyonlar (anonim türler)
  2. Somutlaştırma (ToList, ToDictionary) ve performans notları
  3. Birleştirilebilirlik ipuçları
← C# Academy Sayfasına Dön