請考慮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);
看來,整數,當單獨指定,可以裝箱或強制鍵入object
,然後強制爲一個字符串。
此聲明在運行時失敗。
int[] myInts = new int[] {8,9};
string bar = string.Format("{0} and {1}", myInts);
指數(基於零的)必須大於參數列表的大小大於或等於零且小於。
- 爲什麼沒有或不能在int數組被強制或盒裝到
object[]
或string[]
? - 出於一點好奇心,爲什麼編譯器不知道這個?
AO:感謝這個答案。我已經更新了這個問題,以包含'string []'string.Format()'的成功。這與'int []'有什麼不同? – 2010-07-15 17:36:02
@ p.campbell,請參閱有關數組協方差在值類型中不受支持的更新。 – 2010-07-15 17:38:04
所以你說'int []'是作爲一個對象而不是數組或對象數組傳遞的,但'object []'會作爲一個數組傳遞? – Jack 2013-03-29 10:25:55