打印变量时在 c# 上是不是需要占位符

Posted

技术标签:

【中文标题】打印变量时在 c# 上是不是需要占位符【英文标题】:Is placeholders necessary on c# when printing variables打印变量时在 c# 上是否需要占位符 【发布时间】:2017-01-09 03:36:48 【问题描述】:

在 C++ 中,当你定义了一个变量并想要打印它时,你可以这样做

cout << "Your varibales is" << var1 << endl;

但是为什么在 c# 中你需要一个占位符来这样做呢?

Console.WriteLine("The answer is 0" , answer);

因为在没有placeholder 的情况下打印答案时出现错误。 我在网上搜索过,但它没有提供我需要的信息..

【问题讨论】:

作为以下答案的替代方案,如果您使用 C# 6,您还可以选择使用 interpolated strings。它可以使您的字符串在大多数情况下更具可读性:Console.WriteLine($"The answer is answer"); 【参考方案1】:

在变量必须是字符串的条件下,您不必像这样使用连接,否则您必须使用.ToString() 进行转换并格式化对象:

Console.WriteLine("The answer is " + answer); // if answer is string

answer 成为一个 DateTime 对象,并且您只想打印格式为“dd-MMM-yyyy”的日期,那么您可以像这样使用:

Console.WriteLine("The answer is " + answer.ToString("dd-MMM-yyyy")); // if answer is not string

【讨论】:

你不需要显式调用answer.ToString() :)【参考方案2】:

因为这是String.Format 的工作方式。 Console.WriteLine 在内部使用 String.Format。你可以写类似Console.WriteLine("The answer is " + answer); 的东西。

【讨论】:

【参考方案3】:

占位符仅用于字符串格式化:在内部WriteLine 方法将调用String.Format 方法,但您可以自己格式化,也可以使用多个Console.Write 语句:

Console.Write("The answer is ");
Console.WriteLine(answer);

例如,或多或少等同于您在 C++ 程序中所做的事情,因为以下语句:

cout << "Your varibales is" << var1 << endl;

基本上归结为:

cout2 = cout << "Your varibales is";
cout3 = cout2 << var1;
cout3 << endl;

并且cout 上的&lt;&lt; 或多或少等同于在Console 上调用Write&lt;&lt; 只返回控制台对象,以便可以使用 chaining

【讨论】:

【参考方案4】:

除了这些其他答案之外,您还可以使用 字符串插值

Console.WriteLine($"The answer is answer");

【讨论】:

【参考方案5】:

当你尝试时

Console.WriteLine("The answer is " , answer); //without placeholder

这不会给你错误但不会打印answer,并且控制台输出将是The answer is,因为你还没有告诉将变量answer放在哪里。因此,如果您想打印答案,您可以按照其他帖子的建议使用+ 进行连接,或者您必须使用占位符

让我们举个例子来了解在哪里使用什么。假设您有许多变量要显示在输出中。您可以使用占位符,以便于阅读。比如

string fname = "Mohit";
string lname = "Shrivastava";
string myAddr = "Some Place";
string Designation = "Some Desig";

现在假设我们想在输出中显示一些字符串,就像

嘿! Mohit 的姓氏是 Shrivastava,目前住在 Some Place,他在 so n so 公司以 Some Desig 的身份工作。

因此,其中一种方法可能是 我们许多人建议的

Console.WriteLine("Hey!! " + fname + " whose last name would be " + lname + " is currently living at " + myAddr + " and he is working as " + Designation + " with so n so company.");

在这种情况下,占位符对于提高可读性起着至关重要的作用,例如

Console.WriteLine("Hey!! 0 whose last name would be 1 is currently living at 2 and he is working as 3 with so n so company.",fname,lname,myAddr,Designation);

使用C#6.0 String Interpolation,您还可以像

那样以高效的方式进行操作
Console.WriteLine($"Hey!! fname whose last name would be lname is currently living at myAddr and he is working as Designation with so n so company.");

【讨论】:

以上是关于打印变量时在 c# 上是不是需要占位符的主要内容,如果未能解决你的问题,请参考以下文章

总结:C#变量,占位符等相关知识

在输入 javascript 时在占位符中创建单词

如何在拖动项目时在Extjs中创建占位符

Java输出格式化之占位符

检查是不是支持占位符的简单方法?

如何在 Laravel 中生成具有占位符/可替换值的路由,以便在运行时在 JS 中使用?