【问题标题】:How can I write these variables into one line of code in C#?如何将这些变量写入 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);

感谢您提供任何帮助。

【问题讨论】:

    标签: c# console int var console.writeline


    【解决方案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($"month{DateTime.Today.Month} day{DateTime.Today.Day} year{DateTime.Today.Year}");
            

            5.24.2016

            month5 day24 year2016

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2022-08-10
              • 1970-01-01
              • 2022-01-21
              • 2014-11-10
              • 1970-01-01
              • 2016-10-20
              • 2016-09-06
              • 2016-06-19
              相关资源
              最近更新 更多