C# Çoklu Değer Döndürme

İş Tem 19, 2018 No Comments

onecikarilmis

Bir fonksiyon yazmam gerekiyor, bu fonksiyonda birden fazla değer döndürmem gerekiyor, en kolay yoldan nasıl yapacağım? Çare ‘Tuple’ (kelime anlamı da değişkenler grubuymuş) veya C# 7.0 versiyonu.

Örneğin bir veritabanından veri okuyup verileri DataTable formatında döndürmeniz gerekiyor, bir de okuma sırasında bir hata oluşup oluşmadığı bilgisi için bir tane bool değişkenine ihtiyacımız var. C# 7.0 versiyonu kullanmıyorsak veya kullanıyorsak ama yine de Tuple ile yapmak istersek aşağıdaki gibi bir yapı ile fonksiyonumu oluşturabiliriz.

public Tuple<DataTable , bool> OrnekTupleFonksiyonu(string tabloAdi)
{
     DataTable dataTable = new DataTable();
     bool hata = false;

     //yapılacak işlemler

     return Tuple.Create(dataTable, hata);
}

tuplefonksiyonu

Yok ben 7.0’ın getirdiği özellikleri kullanmak istiyorum, Tuple falan uğraşmak istemiyorum dersek de onun da çözümü var. Öncelikle projemizin .Net Framework versiyonunun 4.7 veya üzeri olması gerekiyor.

net7

Versiyonunu ayarladıktan sonra aşağıdaki gibi bir fonksiyon ile yine çoklu değer döndürme işlemimizi halledebiliriz.

public (DataTable, bool) OrnekMultiFonksiyon(string tabloAdi)
{
     DataTable dataTable = new DataTable();
     bool hata = false;

     //yapılacak işlemler

     return (dataTable, hata);
}

c#7fonksiyon2

Daha sonra oluşturduğumuz bu fonksiyonları başka class içerisinde çağırıp kullanırken de aşağıdaki şekilde kullanmak uygun olacaktır.

public void OrnekFonksiyon()
{
     CLS_Veritabani vt = new CLS_Veritabani();
     DataTable dataTable = vt.OrnekTupleFonksiyonu("tbl_tablo").Item1;
     bool hata = vt.OrnekTupleFonksiyonu("tbl_tablo").Item2;

     DataTable dataTable2 = vt.OrnekMultiFonksiyon("tbl_tablo").Item1;
     bool hata2 = vt.OrnekMultiFonksiyon("tbl_tablo").Item2;

     if (!(hata && hata2))
     {
          //yapılacak işlemler
     }
     else
     {
          //yapılacak işlemler
     }
}

anafonk

 

Çoklu değer döndürmek için elbette başka çözümler de üretilebilir ancak bu ikisi en kolay ve doğru çözüm diyebilirim.

 

İrem.

irem

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir