Xem xét string.Format()
có tham số là một chuỗi và, trong số những thứ khác trong danh sách quá tải, object[]
hoặc nhiều đối tượng.string.Format không thành công khi chạy với mảng số nguyên
Tuyên bố này thành công:
string foo = string.Format("{0} {1}", 5, 6);
như thực hiện điều này:
object[] myObjs = new object[] {8,9};
string baz = string.Format("{0} and {1}", myObjs;
cũng như một mảng của chuỗi:
string[] myStrings = new string[] {"abc", "xyz"};
string baz = string.Format("{0} {1}", myStrings);
Dường như số nguyên, khi quy định cá nhân, có thể được đóng hộp hoặc ép buộc để nhập object
, do đó bị ép buộc thành một chuỗi.
Tuyên bố này không thành công tại thời gian chạy.
int[] myInts = new int[] {8,9};
string bar = string.Format("{0} and {1}", myInts);
Index (zero based) phải lớn hơn hoặc bằng số không và nhỏ hơn kích thước của danh sách đối số.
- Tại sao không hoặc có thể không phải là mảng int bị cưỡng chế hoặc đóng hộp đến một
object[]
hoặcstring[]
? - Hết một chút tò mò, tại sao trình biên dịch không bắt được điều này?
AO: cảm ơn cho câu trả lời này. Tôi đã cập nhật câu hỏi để bao gồm sự thành công của 'string.Format()' với một 'string []'. Có khác biệt gì với 'int []'? –
@ p.campbell, xem cập nhật của tôi về mảng hiệp phương sai không được hỗ trợ trong các loại giá trị. –
Vì vậy, bạn đang nói rằng 'int []' đang được truyền như một đối tượng thay vì như một mảng mảng hoặc đối tượng nhưng 'đối tượng []' sẽ được chuyển thành một mảng? – Jack