System.String.Format
5 つのオーバーロードを持つ文字列をフォーマットしたいと思います。
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 )
次のように、4 番目のオーバーロード (オブジェクトの配列を受け取るオーバーロード) を使用したいと思います。
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.
「正しい」オーバーロードを強制する方法はありますか?