Named và Optional Arguments trong C# 4.0

by Neon Quach 6. March 2010 22:00

Khi làm việc với Com đặc biệt là Office Com Component, có rất nhiều phương thức của Com đòi hỏi nhiều tham số truyền vào.

Named và Optional Arguments là 1 đặc trưng mới của C# 4.0, về mặt ý nghỉa thì mình tạm đặt là Các tham số tùy chọn và tham số được đặt tên,
Cả hai kỹ thuật này có thể sử dụng đối với các phương thức, indexers, constructores và delegates, để cho đơn giản chúng ta nhìn vào phương thực này.

        // A method with nameed and optional parameters

        public static void Search(string name, int age = 21, string city = "Pueblo")

        {

            Console.WriteLine("Name = {0} - Age = {1} - City = {2}", name, age, city);

        }


Ở phương thức Search các tham số tùy chọn là age và city (có thể có hoặc không), và nó được đặt tên tương ứng với tên tham số.

Và đây là cách gọi phương thức Search

            // 1. Standard call

            Search("Sue", 22, "New York");

 

            // 2. Omit city parameter

            Search("Mark", 23);

 

            // 3. Explicitly name the city parameter

            Search("Lucy", city: "Cairo");

 

            // 4. Use named parameters in reverse order

            Search("Pedro", age: 45, city: "Saigon");


Lúc nào chúng ta cũng truyền vào name vì name không phải là optional parameter.
Giải thích các phương thức:

1. Cách gọi thông thường à không cần phải bàn.

2.Gọi phương thức Search mà không cần truyền vào tham số city à nó sẻ lấy default value là “Pueblo

3.Tường minh truyền vào tham số như vậy Cairo sẻ là giá trị của tham số city truyền vào cho phương thức.

4.Gọi phương thức mà không cần phải truyền đúng theo thứ tự của phương thức, giá trị của tham số sẻ tương ứng với tên phía trước nó.

Name = Sue - Age = 22 - City = New York

Name = Mark - Age = 23 - City = Pueblo

Name = Lucy - Age = 21 - City = Cairo

Name = Pedro - Age = 45 - City = Saigon

Nhấn F5, chúng ta sẻ có kết quả như trên.

Chú ý: optional parameter luôn luôn lúc nào cũng nào phía sau required parameter

Chúng ta sẻ bị lổi biên dịch khi

public static void Search(int age = 21, string city = "Pueblo",string name)


Regards,

 

Tags: , ,


Categories: net framework | visual studio 2010

Powered by BlogEngine.NET 1.6.0.0 - Eco Theme by n3o Web Designers