我在C#

时间:2018-02-18 05:09:08

标签: c# .net output console.writeline

当我在C#中使用{0}占位符时,输出错误。这是这样,但现在遵循一个代码块,请看下面的评论,请:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using static System.Console;
    namespace Ch06Ex03
    {
        class Program
        {
            static void Main(string[] args)
            {
                int argument = 10;//test argument
                WriteLine($"The argument is={argument}");
                *WriteLine($"The argument is={0}",argument);*/*Here,When I use the {0},output is 0,Why not is 10?*/
                ReadKey();
            }
        }
    }

4 个答案:

答案 0 :(得分:6)

您正在混合插值字符串和复合格式。 有关详细信息,请参阅https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/interpolated-strings

插值字符串

Console.WriteLine($"Key: {value}");

$表示我们正在使用插值字符串。

复合格式

Console.WriteLine("Key: {0}", value);

复合格式仅在Console.WriteLineString.Format等特定方法中可用。在这些方法中,“0”表示以下参数中的索引。

答案 1 :(得分:1)

字符串前面的美元符号表示编译器执行插值,在某种意义上将括号中的部分解释为代码。删除美元符号以执行常规格式操作。

https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/interpolated-strings

答案 2 :(得分:0)

首先,删除它(甚至不能在我的VS2012上编译:

using static System.Console;

然后,使用它:

int argument = 10;//test argument
 Console.WriteLine(String.Format("The argument is={0}", argument));
 Console.ReadKey();

通常,使用类限定方法更好。它使意图变得清晰,并且如果两个类包含相同的方法名,则可以防止模糊的引用编译错误。

答案 3 :(得分:0)

此版本正常。问题是你的版本中第二种情况下的美元符号。

 using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;

 namespace ConsoleApplication1
 {
    class Program
    {
       static void Main(string[] args)
       {
        int argument = 10;//test argument
        Console.WriteLine($"The argument is={argument}");
        Console.WriteLine("The argument is={0}", argument);
        Console.WriteLine(String.Format("The argument is = {0}", argument));//Otra forma        
        Console.ReadKey();
    }
}

}