Tôi có một phương pháp có sử dụng các từ khóa params
, như vậy:Tại sao truyền null cho một kết quả phương thức params trong một mảng tham số null?
private void ParamsMethod(params string[] args)
{
// Etc...
}
Sau đó, tôi gọi là phương pháp sử dụng kết hợp khác nhau của các đối số:
// Within the method, args is...
ParamsMethod(); // - a string array with no elements
ParamsMethod(null); // - null (Why is this?)
ParamsMethod((string)null); // - a string array with one element: null
ParamsMethod(null, null); // - a string array with two elements: null and null
ParamsMethod("s1"); // - a string array with one element: "s1"
ParamsMethod("s1", "s2"); // - a string array with two elements: "s1" and "s2"
Tôi hiểu tất cả các trường hợp, trừ cái thứ hai. Ai đó có thể giải thích lý do tại sao ParamsMethod(null)
gây ra args
là null
, thay vì một mảng có một phần tử null không?
Bây giờ bạn đã biết câu trả lời, bạn có thể làm việc trong câu đố này. Bạn có hai phương thức, 'void M (object) {}' và 'void M (params object []) {}'. Bạn gọi là 'M (null)'.Quá tải nào được chọn, cái gì được truyền cho nó, và tại sao? –
Tôi đã gặp phải điều này trước đây. Tôi nghĩ rằng chỉ cần đổi tên một trong những phương pháp. :) – FishBasketGordo