C#'da Generic List Cast Etme İşlemleri

Elimizde türünü bildiğimiz bir List<object> nesnemiz olabilir, bunun içindeki elemanlarla işlem yapabilmek için object türünden kendi tipimize dönüştürmek isteyebiliriz veya tam tersi durum da olabilir, elimizdeki bir listeyi List<object> türüne dönüştürmek isteyebiliriz.

Generic List sınıfı IEnumerable interface'inden türemiştir, IEnumerable interface'in türeyen sınıflar için Cast extension metodunu kullanarak dönüştürme işlemlerini gerçekleştirebiliriz.

Not: Cast extension metodunu kullanmak için System.Linq namespace'ini eklemeniz gerekmektedir.

Kısa bir açıklama yaptıktan sonra gelelim dönüştürme işlemlerinin nasıl yapıldığına. Aşağıdaki gibi Student türünde bir sınıf yaratalım

public class Student
{
    public int Id { get; set; }
    public string Name { get; set; }
}

Student sınıfımızı yazdığımıza göre iki başlıkta dönüşüm işlemlerinin nasıl yapıldığını inceleyelim.

1- List<object> türüne cast etmek

List<Student> türünde bir nesne yaratalım;

List<Student> studentList = new List<Student>()
{
    new Student() { Id = 1, Name = "Sertaç" },
    new Student() { Id = 2, Name = "Deniz" },
    new Student() { Id = 3, Name = "Savaş" },
    new Student() { Id = 4, Name = "Volkan" }
};

Bu Student türündeki listeyi List<object> türüne dönüştürmek için aşağıdaki satırı yazmamız yeterlidir..

List<object> objectList = studentList.Cast<object>().ToList();

2- List<Object> türündeki nesneyi List<Student> türüne cast etmek

Elimizde List<object> türüne cast edilmiş bir nesne varsa ve bunun türünü biliyorsak, yine Cast extension metodunu kullanarak dönüşüm işlemi yapabiliriz.

List<Student> students = objectList.Cast<Student>().ToList();

 

İncelemek isteyenler için Console uygulamasında yazdığım örneği de paylaşayım.

ConsoleApplication_GenericListCast.rar

Bir başka makalede görüşmek üzere :)

Facebook Yorumları

Blog Yorumları (0 Yorum)

avatar
  1. avatar avatar

    {{comment.Name}} dedi ki

Bu makaleyi faydalı buldunuz mu?

Bu içerikle ilgili görüşleriniz önemlidir. Ne düşündüğünüzü söyleyin.

Bu makale faydalı mıydı?

Üzgünüm faydalı değil.
Bildiriminiz gönderiliyor...
Geri bildiriminiz için teşekkürler!
Gönderme sırasında hata alındı!