2010-12-14 43 views

Trả lời

20

C# 4.0 giới thiệu named arguments. Tính năng này cho phép bạn xác định đối số phương pháp bằng tên của họ thay vì vị trí của họ:

public void Foo(int bar, string quux) 
{ 
} 

// Before C# 4.0: 
Foo(42, "text"); 

// After C# 4.0: 
Foo(bar: 42, quux: "text"); 

// Or, equivalently: 
Foo(quux: "text", bar: 42); 

Intellisense đã được cập nhật để hỗ trợ tính năng đó, đó là lý do cơ chế tự động hoàn của nó bây giờ cung cấp cả lựa chọn khi một biểu tượng thể truy cập từ phạm vi hiện có cùng tên với đối số phương thức.

6

Đây có thể là khi bạn đặt giá trị cho thông số khi gọi phương thức, vâng? Trong C# .NET 4, bạn có thể đặt named parameters khi gọi một phương thức. Điều này sẽ loại bỏ sự cần thiết phải nhập các thông số của bạn theo thứ tự đã đặt.

private void MyMethod(int width, int height){ 
    // do stuff 
} 

//These are all the same: 
MyMethod(10,12); 
MyMethod(width: 10, height: 12); 
MyMethod(heigh: 12, width: 12); 
2

đây là một tính năng rất hay. nó cho phép mã của bạn khoan dung hơn với thay đổi thứ tự tham số ...

+0

và tạo mã chi tiết hơn. tất nhiên đối với một số người thì ngôn ngữ càng khô thì càng tốt, nhưng tôi thích mã để có thể đọc được càng tốt. –

+3

Nhưng nó làm cho nó ít khoan dung hơn để thay đổi tên tham số ... –

+0

@ Rose Rose - Tôi muốn có nó ít khoan dung để thay đổi tên. Nếu bạn thay đổi thứ tự của hai tham số với cùng loại hoặc loại tương thích, nó sẽ biên dịch mà không có lỗi, nhưng chức năng không chính xác. –

2

Ngoài những gì người khác viết: Thứ nhất là biến hoặc trường cục bộ, trong khi mã cuối cùng là tên của tham số phương pháp được gọi. Trong mã:

private void MyFirstMethod(int myVar) 
{ 
    Console.WriteLine(myVar); 
} 

private void MySecondMethod(int myVar) 
{ 
    MyFirstMethod(myVar); // Call with the value of the parameter myVar 
    MyFirstMethod(myVar: myVar); // Same as before, but explicitly naming the parameter 

    MyFirstMethod(5); // Call with the value 5 
    MyFirstMethod(myVar: 5); // Same as before, but explicitly naming the parameter 
} 
Các vấn đề liên quan