Thứ Hai, 9 tháng 2, 2009

Các biểu thức Lambda trong C# 3.0 (Phần 1)

Một ví dụ về Lambda cho tìm kiếm chuỗi các ký tự :

class Program
{
       static void Main(string[] args)
       {
              List names = new List();
              names.Add("Dave");
              names.Add("John");
              names.Add("Abe");
              names.Add("Barney");
              names.Add("Chuck");
              string abe = names.Find(IsAbe);
              Console.WriteLine(abe);
       }
       public static bool IsAbe(string name)
       {
             return name.Equals("Abe");
       }
}

Dùng so sánh chuỗi ký tự bên trong của một function phục vụ cho tìm kiếm.

class Program
{
       static void Main(string[] args)
       {
              List names = new List();
              names.Add("Dave");
              names.Add("John");
              names.Add("Abe");
              names.Add("Barney");
              names.Add("Chuck");
              string abe = names.Find(delegate(string name)
              {
                      return name.Equals("Abe");
             });
            Console.WriteLine(abe);
       }
}

Các biểu thức Lambda :

Các biểu thức Lambda làm cho mọi việc dễ dàng hơn bằng cách cho phép bạn tránh được những phương pháp vô danh và khó chịu:

class Program
{
        static void Main(string[] args)
        {
                List names = new List();
                names.Add("Dave");
                names.Add("John");
                names.Add("Abe");
                names.Add("Barney");
                names.Add("Chuck");
                string abe = names.Find((string name) => name.Equals("Abe"));
                Console.WriteLine(abe);
        }
}

Vì biểu thức Lambda đủ thông minh để suy ra các loại biến, tôi thậm chí không có để explicity đề cập đến tên một chuỗi ở trên. Tôi có thể loại bỏ nó để đơn giản hơn và viết nó như sau:

class Program
{
         static void Main(string[] args)
         {
                List names = new List();
                names.Add("Dave");
                names.Add("John");
                names.Add("Abe");
                names.Add("Barney");
                names.Add("Chuck");
                string abe = names.Find(name => name.Equals("Abe"));
               Console.WriteLine(abe);
       }
}

Thường thì các nhà phát triển sẽ sử dụng 1 tên biến trong biểu thức Lambda chỉ để giữ cho mọi thứ gần gũi. Ở đây chúng ta thay thế tên p cho tất cả.

class Program
{
        static void Main(string[] args)
        {
              List names = new List();
              names.Add("Dave");
              names.Add("John");
              names.Add("Abe");
              names.Add("Barney");
              names.Add("Chuck");
              string abe = names.Find(p => p.Equals("Abe"));
              Console.WriteLine(abe);
       }
}

DangTrung

Không có nhận xét nào:

Đăng nhận xét