17.5.1.4 mảng Parameter
Một mảng tham số cho phép đối số cho được xác định theo một trong hai cách trong một phương pháp gọi:
• Đối số đưa ra cho một mảng tham số có thể là một biểu thức đơn của loại là chuyển đổi hoàn toàn (§13.1) thành loại mảng tham số . Trong trường hợp này, mảng tham số hoạt động chính xác như thông số giá trị.
• Ngoài ra, gọi có thể định không hay nhiều đối số cho mảng tham số, trong đó mỗi lập luận là một biểu hiện của một loại đó là ngầm mui trần (§13.1) để loại phần tử của mảng tham số. Trong trường hợp này, gọi tạo một thể hiện của kiểu mảng tham số với chiều dài tương ứng với số lượng đối số, khởi các yếu tố của dụ mảng với các giá trị tham số nhất định, và sử dụng các mảng mới được tạo dụ làm đối số thực tế.
Trong phần cùng một ví dụ được đưa ra:
using System;
class Test
{
static void F(params int[] args) {
Console.Write("Array contains {0} elements:", args.Length);
foreach (int i in args)
Console.Write(" {0}", i);
Console.WriteLine();
}
static void Main() {
int[] arr = {1, 2, 3};
F(arr);
F(10, 20, 30, 40);
F();
}
}
sản xuất sản lượng
Array contains 3 elements: 1 2 3 Array
contains 4 elements: 10 20 30 40 Array
contains 0 elements:
Ví dụ này minh họa hành vi dự kiến: mảng trống
Nguồn
2010-05-31 07:48:39
MS cũng che giấu thông tin này, tôi đã kiểm tra phần params ;-) Thank you very much. – greenoldman
Một giải pháp cho vấn đề này: Tạo phiên bản quá tải của hàm tạo/phương thức với đối số bằng không. Ví dụ: 'void foo()' và 'void foo (tham số int [] x)' – kevinarpe
Cảm ơn. Đây là một liên kết mới sẽ trỏ đến những gì Anthoney đang đề cập đến. [Danh sách đối số -> đánh giá thời gian chạy của danh sách đối số] (https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/language-specification/expressions#run-time-evaluation-of -argument-lists) – Darrelk