Bir dizideki elemanlardan, belli bir değere sahip olanları başka bir değerle değiştirecek bir methoda sahip olmak çok faydalıdır.
Language-Integrated Query (LINQ) bu amaç için standart bir sorgu işlecini sağlamaz ama oluşturması basittir.
Örneğin; string sınıfı Replace() isminde bir method barındırır ve değişkenin değerinde yer alan belli bir karakterin tamamını başka bir karakter ile değiştirir.
Aynı mantık ile diziler üzerinde çalışan bir method olsaydı çok kullanışlı olurdu.
Öncelikle static ExtensionMethods isimli bir sınıf oluşturalım;
public static class ExtensionMethods { }</pre>
Replace() methodunu yazalım;
public static IEnumerable<T> Replace<T>(this IEnumerable<T> list, T find, T replaceWith) { if (list == null) throw new ArgumentNullException("sequence"); foreach (T item in list) { yield return find.Equals(item) ? replaceWith : item; } }
Örnek kullanım şekli;
int[] values = new int[] { 1, 2, 3, 4, 5, 4, 3, 2, 1 }; int[] replacedInts = values.Replace(3, 0).ToArray(); // SONUÇ // 1, 2, 0, 4, 5, 4, 0, 2, 1 string[] strings = new string[] { "A", "B", "C", "D", "C", "B", "A" }; string[] replacedStrings = strings.Replace("B", "-").ToArray(); // SONUÇ // "A", "-", "C", "D", "C", "-", "A"
Senior Software Engineer, @Microsoft
Ada ve Ege'nin babası ;)
Makale Adedi: 484