邮件主题=字符串主题="test {0}",test2;输出:"test {0}"

Email subject = string subject = "test {0}", test2; Outputs:"test {0}"

我正在创建一个程序,它会发送一封电子邮件,其中包含该程序预先从用户那里收集的一些数据。

目前,我的问题是当我使用:

string subject = "test {0}", test2;

我收到的电子邮件是这样的输出:

test {0}

而不是预期的输出:

"test test2".

有什么我遗漏的吗?

我刚刚通过删除文本并仅使用变量作为主题来测试其他东西,效果很好。但是为什么 text/string + 变量不起作用?

Vs 说我添加的变量 test2 已经定义。

完整代码:

string test2 = "test";
string subject = "test {0}", test2;
string body = "test1";

这是因为你需要将格式化后的字符串包裹在 String.Format() 或 Console.WriteLine();

应该是

string test2 = "test";
string subject = String.Format("test {0}", test2);
string body = "test1";

如果没有 String.Format,C# 只会认为您定义了 2 个单独的字符串变量。它创建了一个名为 subject 的变量,它等于 "test {0}" 和另一个名为 test2 的变量,您已经在之前的行中定义了它,这就是它抱怨的原因。 它认为你想说

string test2 = "test";
string subject = "test {0}";
string test2;
string body = "test1";

阅读复合格式的文档。 https://docs.microsoft.com/en-us/dotnet/standard/base-types/composite-formatting