2013-04-24 22 views
7

Tôi có một phương pháp C# với một danh sách đối số chiều dài thay đổi tuyên bố sử dụng params keyword:Các thông số được đặt tên và từ khóa params trong C#

public void VariableLengthParameterFunction (object firstParam, 
              params object[] secondParam) 

Có cách nào sử dụng tên thông số khi gọi phương pháp này?

+2

bạn muốn đạt được điều gì? – Default

+0

chỉ cố gắng sử dụng các thông số có tên mà không phải thay đổi chữ ký phương thức – marosoaie

Trả lời

20

Bạn có thể gọi nó là sử dụng tham số có tên như thế này:

VariableLengthParameterFunction(
    secondParam: new object[] { 5, 7, 3, 2 }, 
    firstParam: 4); 
+0

Điều này dường như không hoạt động với các công cụ msbuild 2015, secondparam bị mất nếu bạn sử dụng ký hiệu cho một phần tử đơn? (hoạt động với devenv) –

0

EDIT: Tôi giả định bạn muốn truy cập vào params object[] secondParam mảng sử dụng tên thông số.

Hiện tại chỉ có mã bên trong phương thức mới biết được những gì secondParam có thể chứa. Chỉ từ chữ ký phương thức, không có liên kết giữa object[] và tên/loại cho mỗi phần tử trong mảng đó.

Hơn nữa, vì bạn đang sử dụng từ khóa params, không có cách nào cung cấp secondParam[1] mà không cung cấp giá trị cho secondParam[0] (hoặc null).

Có lẽ bạn có thể tạo một tình trạng quá tải lấy thông số được đặt tên và tạo ra các thông số object[] và sau đó gọi phương thức này. Hoặc cách khác xung quanh.

Các vấn đề liên quan