3

给定以下代码:

string a = "example";
string b = "blah {0}", a;

我被引导相信使用{0}or {1},它会在逗号之后放置任何内容,在这种情况下为 string a, so "example"。字符串b应该是"blah example". 当我这样做时,我收到错误“字符串 a 已声明”。

为什么它认为我在这种情况下声明了一个字符串?

4

7 回答 7

9

我相信您打算使用string.Format。这不是暗示(但它会很好)。

string b = string.Format("blah {0}", a);

您的代码将翻译如下。当您将其完全展开时,编译器错误很明显。

// Given
string a = "example";
string b = "blah {0}", a;

// corresponds to ...
string a; a = "example";
string b; b = "blah {0}";
string a;

MSDN 局部变量声明

于 2013-03-20T18:10:43.263 回答
5

在此处输入图像描述

看起来您正在尝试使用String.Format

string b = String.Format("blah {0}", a);

将其视为为您构建字符串的方法。有点像printf来自 c/c++

于 2013-03-20T18:11:02.123 回答
5

这一行:

string b = "blah {0}", a;

用初始值声明string b,然后声明string a.

当您指定以逗号分隔的多个变量名称时,它会全部声明它们,例如:

string a, b, c, d;

您可能打算使用 String.Format()。

string b = String.Format("blah {0}", a);
于 2013-03-20T18:11:11.293 回答
2

您正在重新声明a.

c#和许多其他语言中,使用逗号分隔符声明变量是简写。

例子:

int x,y,z; // declare three integer variables x y and z

你需要使用String.Format

string a = "example";        
string b = string.Format("blah {0}", a);
于 2013-03-20T18:11:44.337 回答
2

您只是将变量重新声明为 Eric。J说。看起来您正在尝试连接两个字符串,因此您可以使用字符串类中的 Format 函数:

string a = "example";
string b = string.Format("blah {0}", a);

或者您可以使用运算符 +:

string a = "example";
string b = "blah " + a;

祝你好运 ;)。

于 2013-03-20T18:40:34.270 回答
1

这就是你要找的:

string b = string.Format("blah {0}", a);
于 2013-03-20T18:10:47.007 回答
1

string b = string.Format("blah {0}", a);

于 2013-03-20T18:11:36.043 回答