string.Format()
은 매개 변수가 문자열이고 오버로드 목록에서 다른 매개 변수 중 object[]
또는 많은 객체를 포함합니다.string.Format은 런타임에 정수 배열을 사용하여 실패합니다.
이 문이 성공 :
string foo = string.Format("{0} {1}", 5, 6);
처럼이 :
문자열 배열처럼object[] myObjs = new object[] {8,9};
string baz = string.Format("{0} and {1}", myObjs;
:
string[] myStrings = new string[] {"abc", "xyz"};
string baz = string.Format("{0} {1}", myStrings);
정수, 개별적으로 지정된 경우 것 같다을, boxed 또는 강제로 object
을 입력 할 수 있으며, 차례로 문자열로 강제 변환됩니다.
이 문은 런타임에서 실패합니다.
int[] myInts = new int[] {8,9};
string bar = string.Format("{0} and {1}", myInts);
인덱스 (0부터) 인수 목록의 크기보다 이상인 제로 이하이어야한다.
- 왜 int 배열은
object[]
또는string[]
강제 변환 또는 박스 될 수 없거나 무엇입니까? - 호기심 때문에 컴파일러가 왜 이것을 잡지 못합니까? 당신은
format
에 두 개의 인수를 지정하지만 하나 개의 객체를 지정하는string foo = string.Format("{0} {1}", 5);
:
AO를 입력 할 수있는 두 번째 인수가없는 것입니다. 'string.Format()'과'string []'의 성공을 포함하도록 질문을 업데이트했습니다. 그것은 int []와 다르지 않습니까? –
@ p.campbell, 값 유형에서 지원되지 않는 배열 공분산에 대한 내 업데이트를 참조하십시오. –
그래서'int []'가 배열이나 객체 배열 대신 객체로 전달되었지만'object []'가 배열로 전달된다는 말입니까? – Jack