当我在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();
}
}
}
答案 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.WriteLine
,String.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();
}
}
}