Collections | Engin Polat\'ın Windows 8 , Windows Phone 8 ve C# içerikli programcılık sitesi

Arşiv

Etiketlenen yazılar collections

Kısa Sınav – 18

08 February 2013 1 yorum

IEnumerable interface‘inden türetilmiş Student sınıfı aşağıdaki gibidir;

using System;
using System.Collections;

public class Student : IEnumerable
{
	public string FullName { get; set; }

	private int count;
	public int Count { get { return count; } }

	public void Add(string fullName)
	{
		count++;
	}

	IEnumerator IEnumerable.GetEnumerator()
	{
		throw new NotSupportedException();
	}
}

Student sınıfını kullanan kod parçası aşağıdaki gibidir;

string FullName = "x";
Student student = new Student { FullName = "y" };

Console.WriteLine(FullName);         /// x
Console.WriteLine(student.FullName); /// y
Console.WriteLine(student.Count);    /// 0

Student sınıfını kullanan kod parçasını aşağıdaki gibi değiştirelim;

string FullName = "x";
Student student = new Student { ( FullName = "y" ) };

Console.WriteLine(FullName);
Console.WriteLine(student.FullName);
Console.WriteLine(student.Count);

Sizce, yeni kod parçasının çıktısı ne olur?

C# String Dizisini String Uzunluğuna Göre Sıralamak

19 August 2011 Yorum yapılmamış

Geliştirdiğimiz projelerde ekrana listeleyeceğimiz dizileri harf uzunluklarına göre sıralamak isteyebiliriz.

Bu makale ile, IEnumerable<string> tipinden değişkenlere bu özelliği nasıl ekleyeceğimizi göreceğiz.

Öncelikle Extension Method‘umuzu static bir sınıf içerisine (ExtensionManager) yazmamız lazım;

public static class ExtensionManager
{
	public static IEnumerable<string> Sirala(this IEnumerable<string> Liste)
	{
		string[] strArray = Liste.ToArray<string>();
		Array.Sort(strArray, new Comparison<string>(delegate(string Kelime1, string Kelime2)
		{
			if (Kelime1 == null && Kelime2 == null)
			{
				return 0;
			}
			else if (Kelime1 == null)
			{
				return -1;
			}
			else if (Kelime2 == null)
			{
				return 1;
			}
			else
			{
				if (Kelime1.Length < Kelime2.Length)
					return -1;
				else if (Kelime1.Length > Kelime2.Length)
					return 1;
				else
					return Kelime1.CompareTo(Kelime2);
			}
		}));

		return strArray;
	}
}

Yukarıdaki kod’da Array sınıfının static Sort method’unu çağırıyoruz. Karşılaştırma koşulunu, ikinci parametre’de delegate method olarak yazıyoruz.

Kullanımı;

var Rakamlar = new List<string> { "12", "1", null, "2314", "55555", "123", "222" };

foreach (var Rakam in Rakamlar.Sirala())
{
	Console.WriteLine(Rakam);
}

Sonuç;

[null]
1
12
123
222
2314
55555