如何将这些变量写入 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# 中的一行代码?的主要内容,如果未能解决你的问题,请参考以下文章

如何将文本文件的第一行放在结束位置

c#如何始终将数据保存在第一行区域的txt文件中?

c# StreamWriter 应用中,我想每一行中写入两个不同性质的数据,该怎么写呢

如何每隔一行写入文件?

如何将文件(IN C)中的每一行保存在变量中? :)

Java 如何使用输入流和输出流 将txt文件中的某一行数据删除?