参数未用于格式化字符串

本文关键字:字符串 格式化 用于 参数 | 更新日期: 2023-09-27 17:58:24

嘿,伙计们,我确信这是否已经被问过了,但我找不到。如果它是多余的,我很抱歉。请将我链接到它。我的问题是:

错误"参数未用于格式化字符串"是什么意思?我正在使用C#

using System;
class PrintNum
{

    static void Main()
    {
        short s = 10;
        int i = 1000;
        long l = 1000000;
        float f = 230.47f;
        double d = 30949.374;

        //This is where I'm getting the error. 
        Console.Write("s: %d'n", s); //<<< if you hover over the variable s on the outside.
        Console.Write("i: %d'n", i);
        Console.Write("l: %ld'n", l);
        Console.Write("f: %.3f'n", f);
        Console.Write("d: %.3f'n", d);
    }
}

参数未用于格式化字符串

您的格式字符串不正确。它应该是类似的东西

Console.Write("s: {0}'n", s);

其中格式字符串中的{0}表示"格式字符串后传递的第一个参数",{1}表示第二个参数(如果有),依此类推

与C不同,%d和类似的格式化参数不用于C#格式字符串,并且这种格式化是通过您正在使用的类型的ToString方法重写来处理的。

使用{0}将参数插入字符串,0是参数编号:

Console.Write("s: {0}'n", s);

如果您想进一步格式化您的号码,请查看文档。

此外,还有一个Console.WriteLine方法可以避免在字符串末尾添加换行符。

正如其他答案所说,您的Console.Write需要包含"{0}",因为这是您正在编写的变量的占位符。需要注意的是,{0}、{1}等是位置参数,在字符串中必须遵循该顺序。同样重要的是要知道Console.Write在下面使用String.Format,这样您就可以使用标准数字格式字符串中描述的所有格式字符串(https://msdn.microsoft.com/en-us/library/dwhawy9k(v=vs.110).aspx)话虽如此,我想这就是你想要的:

sing System;
public class Test
{
    public static void Main()
    {
        short s = 10;
        int i = 1000;
        long l = 1000000;
        float f = 230.47f;
        double d = 30949.374;
        Console.WriteLine("s: {0:D}", s);
        Console.WriteLine("i: {0:D}", i);
        Console.WriteLine("l: {0:D}", l);
        Console.WriteLine("f: {0:F}", f);
        Console.WriteLine("d: {0:F}", d);
    }
}

输出:

s: 10
i: 1000
l: 1000000
f: 230.47
d: 30949.37