c#字符串.格式错误?



我很难理解为什么这段代码会产生这样的结果:

$ type t.cs
using System;
using static System.Console;
using static System.Environment;
class P
{
public static void Main()
{ uint a=1;
string b="a string";
string c=String.Format ( $"{0}t{1}" , a , b) ;
Out.WriteLine( c );
Exit(0);
}
}
$ csc t.cs 
Microsoft (R) Visual C# Compiler version 2.9.0.63208 (958f2354)
Copyright (C) Microsoft Corporation. All rights reserved.
$ .T.EXE
0       1

我已经阅读了关于字符串的文档。格式:https://learn.microsoft.com/en-us/dotnet/api/system.string.format?view=net-5.0
但我仍然不知道如何解释为什么上面的代码打印"0 & lt; tab> 1";而不是"1a string".

谁能给我点化一下吗?

这个插入的字符串文字表达式:

$"{0}t{1}"

将计算为:

"0t1"

…在传递给string.Format()之前,因为它没有占位符,输入参数被忽略,结果字符串只是"0t1"

更改为:

string c = String.Format("{0}t{1}", a, b); // no interpolation of template string

string c = $"{a}t{b}"; // expand a and b inline using interpolation

因为你正在使用字符串插值->美元"{}";{0}和{1}在这种情况下不是占位符,它们是字面量。删除字符串"{0}t{1}"前的美元符号;你会得到你想要的。

相关内容

  • 没有找到相关文章

最新更新