C#使用String.Format常见报错

    C#中使用String.Format(string format,object arg)连接字符串,format中添加带索引的占位符如:{0},然后就可以得到相应的字符串。其中会遇到几个常见的异常。

异常一、

FormatException: Index (zero based) must be greater than or equal to zero and less than the size of the argument list.

System.String.FormatHelper (System.Text.StringBuilder result, IFormatProvider provider, System.String format, System.Object[] args) (at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System/String.cs:1925)

如果字符串str中有占位符,但是使用string.Format时参数的个数小于占位符的个数就会报异常,或者占位符的索引不正确,索引是从0开始,但是需要传的参数是最大的决定。如:

        string str = ".....{0}......";
        Debug.Log(string.Format(str));

如果字符串str中没有占位符,即时使用string.Format时添加了参数也不会报异常。

异常二、

FormatException: Input string was not in a correct format.

System.String.FormatHelper (System.Text.StringBuilder result, IFormatProvider provider, System.String format, System.Object[] args) (at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System/String.cs:1970)

如果字符串str中有不完整的大括号,即只有“{”或只有“}”时,就会出现这个异常。如:

        string str = ".......{{0}....";
        Debug.Log(string.Format(str,"1"));

如果你的字符串里面需要“{”这样的格式,你可以再添加一个“{”即可,反括号同理,如:

        string str = ".......{{{0}....";
        Debug.Log(string.Format(str,"1"));

异常三、

这种异常什么时候发生的搞忘了,如果想起了再加,看英文意思是索引超出了数组的长度。

IndexOutOfRangeException: Array index is out of range.

System.String.FormatHelper (System.Text.StringBuilder result, IFormatProvider provider, System.String format, System.Object[] args) (at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System/String.cs:1912)

 

 

©️2020 CSDN 皮肤主题: 黑客帝国 设计师:上身试试 返回首页