Tôi đã làm việc trên Java và mới sử dụng công nghệ .Net
Có thể khai báo một hàm trong C # chấp nhận các tham số đầu vào thay đổi không
Có cú pháp C # nào giống với cú pháp Java sau không?
void f1(String... a)
Tôi đã làm việc trên Java và mới sử dụng công nghệ .Net
Có thể khai báo một hàm trong C # chấp nhận các tham số đầu vào thay đổi không
Có cú pháp C # nào giống với cú pháp Java sau không?
void f1(String... a)
Câu trả lời:
Có, C # có tương đương với các tham số varargs. Chúng được gọi là mảng tham số và được giới thiệu với công cụ paramssửa đổi:
public void Foo(int x, params string[] values)
Sau đó gọi nó bằng:
Foo(10, "hello", "there");
Cũng như với Java, nó chỉ là tham số cuối cùng có thể thay đổi như thế này. Lưu ý rằng (như với Java) một tham số của params object[] objectscó thể dễ dàng gây ra nhầm lẫn, vì bạn cần nhớ rằng liệu một đối số duy nhất của kiểu object[]có được bao bọc lại hay không. Tương tự như vậy đối với bất kỳ kiểu nullable nào, bạn cần nhớ liệu một đối số duy nhất của nullsẽ được coi là tham chiếu mảng hay một phần tử mảng duy nhất. (Tôi nghĩ rằng trình biên dịch chỉ tạo mảng nếu nó phải, nhưng tôi có xu hướng viết mã để tránh việc tôi phải nhớ điều đó.)
Hãy xem các thông số (Tham chiếu C #)
Từ khóa params cho phép bạn chỉ định một tham số phương thức có một số lượng đối số thay đổi.
Bạn có thể gửi danh sách các đối số được phân tách bằng dấu phẩy của kiểu được chỉ định trong khai báo tham số hoặc một mảng đối số của kiểu được chỉ định. Bạn cũng có thể không gửi đối số.
Không có tham số bổ sung nào được phép sau từ khóa params trong khai báo phương thức và chỉ một từ khóa params được phép trong khai báo phương thức.
Như được hiển thị trong ví dụ, phương thức được khai báo là
public static void UseParams(params int[] list)
{
for (int i = 0; i < list.Length; i++)
{
Console.Write(list[i] + " ");
}
Console.WriteLine();
}
và được sử dụng như
UseParams(1, 2, 3, 4);