C# 4.0: Truyền tham số theo tên

Trong C# 4.0, bạn không cần truyền các tham số theo đúng thứ tự của nó, mà có thể dùng tên để chỉ ra tham số được truyền tương ứng. Trong nhiều trường hợp, điều này giúp chương trình của bạn dễ hiểu hơn.

Ví dụ:

void MyMethod(int a, string s) 
{
    doSomeThing();

}

Bạn có 2 cách để gọi phương thức này:

MyMethod(10, "my string");

hoặc theo tên tham số:

MyMethod(a: 10, s: "my string");

và tất nhiên nếu dùng tên thì các tham số không cần phải đặt theo đúng thứ tự khi khai báo:

MyMethod(s: "my string", a: 10);

Cách truyền theo tên cũng có thể dùng chung với cách truyền theo thứ tự, tuy nhiên trong trường hợp này các tham số truyền theo tên phải nằm sau, ví dụ:

MyMethod(10, s: "my string");

ví dụ sau là không hợp lệ:

MyMethod(a: 10, "my string");

C# 4.0: Đặt giá trị mặc nhiên cho tham số

Trong C# 4.0, bạn có thể khai báo và sử dụng các tham số tùy chọn, giống như trong ví dụ sau:

public static class OptionalDemoLib
{
   public static void SayHello(string s = “Hello World!”)
   {
      Console.WriteLine(s);
   }
}

Trong đó, tham số s có một giá trị mặc nhiên, khi đó bạn có thể gọi hàm SayHello mà có thể truyền giá trị cho nó hoặc không, trong trường hợp không truyền tham số, giá trị mặc nhiên sẽ được dùng:

public static class OptionalDemo
{
   public static void Main()
   {
      OptionalDemoLib.SayHello();
      OptionalDemoLib.SayHello(“Hello Bart!”);
   }
}

Nhớ rằng các tham số tùy chọn phải được đặt cuối danh sách tham số, nếu không bạn sẽ nhận được thông báo lỗi sau:

optlib.cs(3,58): error CS1737: Optional parameters must appear after all required parameters

Khai báo như trong ví dụ sau là không hợp lệ:

public static void SayHello(string s1 = “Hello World!”, string s2)

Khái niệm giá trị mặc nhiên này đã có từ lâu trong VB, nay cũng sẽ xuất hiện trong C#, điều này sẽ giúp chúng ta viết code một cách nhanh chóng hơn.