C#'da lambda ifadeleri nasıl kullanılır?

Katılım
9 Mart 2017
Mesajlar
1.876
Çözümler
12
Arkadaşlar Java'da yazdığım basit 2 satırlık kodu C#'da yapamıyorum. Daha doğrusu lambda ifadelerini C#'da nasıl kullanacağımı bilmiyorum. Videoda size bir soru sordum. İzleyip cevaplayabilirseniz sevinirim.

Video:

Bu içeriği görüntülemek için üçüncü taraf çerezlerini yerleştirmek için izninize ihtiyacımız olacak.
Daha detaylı bilgi için, çerezler sayfamıza bakınız.
 
Son düzenleyen: Moderatör:

C# için lambda expressions olarak aratırsanız daha çok kaynağa ulaşırsınız :).

Yapmak istediğiniz şu şekilde deneyiniz:
C#:
...(str=>str.kaydetmek için function yazınız);


Not: Sorununuzun çözülüp çözülmediğini yazarsanız çok mutlu olurum :).
 
Son düzenleme:
Not: Sorununuzun çözülüp çözülmediğini yazarsanız çok mutlu olurum :).
Hayır sorunum çözülmedi. Bu kodu düzenleyip doğrusunu bana yazarsanız sevinirim. ☺
C#:
using System;

namespace TestingConsole2
{
    class Program
    {
        static void Main(string[] args)
        {
            Testing Testing = new Testing("Merhaba","Selam");
            Testing.Apply(str->{ return str; }, str->{ return str; });
            Testing.WriteStrings();
            Console.WriteLine("Hello World!");
        }
    }
}

C#:
using System;
using System.Collections.Generic;
using System.Text;

namespace TestingConsole2
{
    class Testing
    {
        public string Str1 { get; set; }
        public string Str2 { get; set; }

        public Testing(string str1,string str2)
        {
            this.Str1 = str1;
            this.Str2 = str2;
        }

        public void Apply(Test1 test1,Test2 test2)
        {
            this.Str1 = test1.Add(this.Str1);
            this.Str2 = test1.Add(this.Str2);
        }

        public void WriteStrings()
        {
            Console.WriteLine(this.Str1 + " "  + this.Str2);
        }
    }
}

C#:
using System;
using System.Collections.Generic;
using System.Text;

namespace TestingConsole2
{
    public interface Test2
    {
        string Add(string str);
    }
}

Kod:
using System;
using System.Collections.Generic;
using System.Text;

namespace TestingConsole2
{
    public interface Test1
    {
        string Add(string str);
    }
}
 
@Börtü Böcek Biraz işim var kusura bakmayın. Akşam kodları düzenleyip atacağım :).
Bildirim düşmesi için tekrardan yazıyorum.

Sadece "public Func<string, string> fill = x => x" fonksiyonunu ekledim peki ne işe yarıyor bu fonksiyon?

Aslında normal bir fonksiyondan farksız fakat " Func<gelen değer, döndürelecek değer> fill = x => x" komudun mantığı bu şekilde işliyor "x=>x" bu da C#'taki lambda için kullanılan Syntax biçimi :).

C#:
  class Program
    {
      
        static void Main(string[] args)
        {
            Testing Testing = new Testing("Merhaba","Selam");
            Testing.WriteStrings();
            Testing.Apply("sa","as");
            Testing.WriteStrings();
            Console.WriteLine("Hello World!");
            Console.ReadLine();
        }

    }

    public class Testing
    {
        public string Str1 { get; set; }
        public string Str2 { get; set; }
        Test2 _test2 = new Test2();
        Test1 _test1 = new Test1();
        public Testing(string str1=null, string str2=null)
        {
            Str1 = str1;
            Str2 = str2;
        }

        public void Apply(string test,string test2)
        {
            Str1 = _test1.Add(test);
            Str2 = _test2.Add(test);
        }

        public void WriteStrings()
        {
            Console.WriteLine(Str1 + " " + Str2);
        }
      

    }
    public class Test2
    {

        public Func<string, string> fill = x => x;
        public string Add(string test)
        {
            return fill(test);
        }
    }

    public class Test1
    {

        public Func<string, string> fill = x => x;
        public string Add(string test)
        {
            return fill(test);
        }
    }
@Börtü Böcük En yakın zamanda cevabınızı bekliyor olacağım.
 
Son düzenleme:
@Börtü Böcek Biraz işim var kusura bakmayın. Akşam kodları düzenleyip atacağım :).
Bildirim düşmesi için tekrardan yazıyorum.

Sadece "public Func<string, string> fill = x => x" fonksiyonunu ekledim peki ne işe yarıyor bu fonksiyon?

Aslında normal bir fonksiyondan farksız fakat " Func<gelen değer, döndürelecek değer> fill = x => x" komudun mantığı bu şekilde işliyor "x=>x" bu da C#'taki lambda için kullanılan Syntax biçimi :).

C#:
  class Program
    {
    
        static void Main(string[] args)
        {
            Testing Testing = new Testing("Merhaba","Selam");
            Testing.WriteStrings();
            Testing.Apply("sa","as");
            Testing.WriteStrings();
            Console.WriteLine("Hello World!");
            Console.ReadLine();
        }

    }

    public class Testing
    {
        public string Str1 { get; set; }
        public string Str2 { get; set; }
        Test2 _test2 = new Test2();
        Test1 _test1 = new Test1();
        public Testing(string str1=null, string str2=null)
        {
            Str1 = str1;
            Str2 = str2;
        }

        public void Apply(string test,string test2)
        {
            Str1 = _test1.Add(test);
            Str2 = _test2.Add(test);
        }

        public void WriteStrings()
        {
            Console.WriteLine(Str1 + " " + Str2);
        }
    

    }
    public class Test2
    {

        public Func<string, string> fill = x => x;
        public string Add(string test)
        {
            return fill(test);
        }
    }

    public class Test1
    {

        public Func<string, string> fill = x => x;
        public string Add(string test)
        {
            return fill(test);
        }
    }
@Börtü Böcük En yakın zamanda cevabınızı bekliyor olacağım.
Aslında bildirim gelmedi. Ben kendim konuyu kontrol edince gördüm. Çok teşekkür ederim yardımınız için.

C#:
public Func<string, string> fill = x => { return x; };
Böyle yazınca da oluyormuş.
Bu Func dediğimiz şey bir interface değil mi? Üzerine gelince delegate yazıyor. Delegate temsilci demek ama Java da böyle bir şey yok. Benim acilen bir C# eğitimi almam şart. 😀
 
Son düzenleme:
Uyarı! Bu konu 6 yıl önce açıldı.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.

Technopat Haberler

Geri
Yukarı