Winamp MP3 oynatıcısında çalma listesini (playlist) rastgele sıra ile karıştırabiliyorsunuz. Benzer özelliği kendi projelerimizde uygulamak isteyebiliriz.
Daha önce, C# ile Dizi Karıştırma yazısında bir dizi’yi (List<T>) nasıl karıştıracağımızı incelemiştik.
Bu yazı ile Karıştırma (Shuffle) yeteneğini Generic Dictionary (Dictionary<TKey, TValue>) ekleyeceğimizi inceleyeceğiz.
İlk olarak, ExtensionManager isminde static bir sınıf oluşturalım;
public static class ExtensionManager { public static Dictionary<TKey, TValue> Shuffle(this Dictionary<TKey, TValue> liste) { Random r = new Random(); return liste.OrderBy(x => r.Next()).ToDictionary(item => item.Key, item => item.Value); } }</pre>
ExtensionManager sınıfının Shuffle() isminde bir method’u var.
Bu method, Random sınıfından yeni bir instance‘ın Next() method’unu kullanarak, liste değişkeninin her bir elemanını rastgele bir değerle sıralıyor.
Böylece, Shuffle() method’u her çağırıldığında liste değişkeninin elemanlarının rastgele sıralandığını görüyoruz.
Örnek Kullanım;
Dictionary<int, string> liste = new Dictionary<int, string>(); for (int iLoop = 0; iLoop < 5; iLoop++) { liste.Add(iLoop, "Eleman " + iLoop); } //0, Eleman 0 //1, Eleman 1 //2, Eleman 2 //3, Eleman 3 //4, Eleman 4 Dictionary<int, string> karistirilmis = liste.Shuffle(); //2, Eleman 2 //1, Eleman 1 //3, Eleman 3 //0, Eleman 0 //4, Eleman 4
Senior Software Engineer, @Microsoft
Ada ve Ege'nin babası ;)
Makale Adedi: 484