我想格式化使用System.String.Format
它具有5個重載的字符串:F#迫使System.String.Format
String String.Format(String format , Object arg0)
String String.Format(String format , Object arg0 , Object arg1)
String String.Format(String format , Object arg0 , Object arg1 , Object arg2)
String String.Format(String format , params Object[] args)
String String.Format(IFormatProvider provider , String format , params Object[] args)
我想用第四過載(在一個取的陣列對象)像這樣:
let frm = "{0} - {1}"
let args = [| 1; 2 |]
System.String.Format(frm, args)
問題是args參數被解釋爲一個對象,因此第一個重載被調用。所以正確我得到以下錯誤:
System.FormatException: Index (zero based) must be greater than or equal to zero and less than the size of the argument list.
有沒有辦法強制「正確」超載?
yes ..所以我應該把所有的元素都轉換成對象? – MSX
任何不做地道的原因:'sprintf「%d - %d」1 2「 - 它正是爲了避免這個問題?任何你想創建一個冗餘數組而不是通過'String.Format(「{0} - {1}」,方框1,方框2)調用第二個重載的原因?或者爲什麼不'sprintf「%A」[| 1; 2 |]'? (我相信你有一個理由,但沒有傷害,要清楚爲什麼這些途徑是不適當的,以使最好的答案) –