如何将这些变量写入 C# 中的一行代码?
Posted
技术标签:
【中文标题】如何将这些变量写入 C# 中的一行代码?【英文标题】:How can I write these variables into one line of code in C#? 【发布时间】:2013-03-03 08:16:30 【问题描述】:我是第 50 页的 C# 新手,我很好奇如何在一行代码中编写这些变量:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace consoleHelloWorld
class Program
static void Main(string[] args)
int mon = DateTime.Today.Month;
int da = DateTime.Today.Day;
int yer = DateTime.Today.Year;
var time = DateTime.Now;
Console.Write(mon);
Console.Write("." + da);
Console.WriteLine("." + yer);
我来自 javascript 在哪里执行它看起来像这样:
document.write(mon+'.'+da+'.'+yer);
感谢您提供任何帮助。
【问题讨论】:
【参考方案1】:查看composite formatting:
Console.WriteLine("0.1.2", mon, da, yer);
你也可以写(虽然不是很推荐):
Console.WriteLine(mon + "." + da + "." + yer);
而且,随着 C# 6.0 的发布,您有了字符串插值表达式:
Console.WriteLine($"mon.da.yer"); // note the $ prefix.
【讨论】:
为什么不推荐第二种方式? 好的,太好了!谢谢我还没有得到复合格式。但我没有用 () 关闭 ToString,因此是这个问题。我现在还在打字,但这是向前发展的宝贵见解...... @AStidham:不推荐,因为它更长,更难看到正在发生的事情,更难修改,并且不太适合国际化。 @JimMischel 在第二个示例中不需要ToString()
调用。
@Servy:很好。我没有意识到编译器会这样做。向您展示我进行字符串连接的频率,不是吗?【参考方案2】:
您可以在一行中完成整个程序!是的,没错,一行!
Console.WriteLine(DateTime.Now.ToString("yyyy.MM.dd"));
您可能会注意到我没有使用与您相同的日期格式。这是因为您应该使用this W3C document 中所述的国际日期格式。每次你不使用它时,都会有一只可爱的小动物死去。
【讨论】:
谢谢,没注意到。将修改此回复,以责备他选择错误的日期格式。 不仅仅是一行,而是一个函数调用:) Console.WriteLine("0:yyyy.MM.dd", DateTime.Now); 每次您尝试对需要 MM/DD/YYYY 的客户强制使用国际日期格式时,您都会失去一份工作。【参考方案3】:您可以执行与 JavaScript 几乎相同的操作。试试这个:
Console.WriteLine(mon + "." + da + "." + yer);
或者您可以使用WriteLine
,就像它是string.Format
语句一样:
Console.WriteLine("0.1.2", mon, da, yer);
相当于:
string.Format("0.1.2", mon, da, yer);
参数的数量可以是无限的,只要确保正确索引这些数字(从 0 开始)。
【讨论】:
【参考方案4】:你应该试试这个:
Console.WriteLine("0.1.2", mon, da, yet);
更多详情请见http://www.dotnetperls.com/console-writeline。
【讨论】:
【参考方案5】:如果你想使用类似 JavaScript 的东西,你只需要先转换成字符串:
Console.WriteLine(mon.ToString() + "." + da.ToString() + "." + yer.ToString());
但是一个(很多)更好的方法是使用格式选项:
Console.WriteLine("0.1.2", mon, da, yer);
【讨论】:
好的,太好了!谢谢我还没有得到复合格式。但我没有用 () 关闭 ToString,因此是这个问题。我现在还在打字,但这是向前发展的宝贵见解......【参考方案6】:理论上你可以简单地完成整个事情:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace consoleHelloWorld
class Program
static void Main(string[] args)
Console.WriteLine(DateTime.Now.ToString("MM.dd.yyyy"));
【讨论】:
是的,这很好,但我想打破日期并先单独获取数字,然后重新组合它们,但你是绝对正确的【参考方案7】: DateTime dateTime = dateTime.Today.ToString("MM.dd.yyyy");
Console.Write(dateTime);
【讨论】:
【参考方案8】:试一试:
string format = "0 / 1 / 2 3";
string date = string.Format(format,mon.ToString(),da.ToString(),yer.ToString();
Console.WriteLine(date);
事实上,可能有一种方法可以自动格式化,甚至不用自己动手。
查看http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx
【讨论】:
【参考方案9】:简单如下:
DateTime.Now.ToString("MM.dd.yyyy");
关于 DateTime.ToString() 方法的所有格式选项的 MSDN 链接
http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx
【讨论】:
虽然这样做了:DateTime thisDate1 = DateTime.Now; Console.WriteLine("今天是" + thisDate1.ToString("MMMM dd, yyyy") + ".");【参考方案10】:在“”之前使用$,这将允许在这些括号之间写入变量
Console.WriteLine($"mon.da.yer");
专业的方式:
Console.WriteLine($"DateTime.Today.Month.DateTime.Today.Day.DateTime.Today.Year");
Console.WriteLine($"monthDateTime.Today.Month dayDateTime.Today.Day yearDateTime.Today.Year");
5.24.2016
month5 day24 year2016
【讨论】:
以上是关于如何将这些变量写入 C# 中的一行代码?的主要内容,如果未能解决你的问题,请参考以下文章