2013-03-14 2 views
14

Ich bin neu in C#, buchstäblich auf Seite 50, und ich bin gespannt, wie diese Variablen in einer Zeile Code zu schreiben:Wie kann ich diese Variablen in eine Zeile Code in C# schreiben?

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); 
     } 
    } 
} 

ich von JavaScript kommen würde, wo dies zu tun, es so aussehen würde wie dies:

document.write(mon+'.'+da+'.'+yer); 

Alle hier Hilfe ist willkommen.

Antwort

32

Blick in composite formatting:

Console.WriteLine("{0}.{1}.{2}", mon, da, yer); 

Man könnte auch schreiben (obwohl es nicht wirklich zu empfehlen ist):

Console.WriteLine(mon + "." + da + "." + yer); 

Und mit der Veröffentlichung von C# 6.0, Sie String-Interpolation Ausdrücke haben:

Console.WriteLine($"{mon}.{da}.{yer}"); // note the $ prefix. 
+0

warum ist die zweiter Weg nicht empfohlen? – astidham2003

+0

OK großartig! Danke, ich bin nicht zu einer zusammengesetzten Formatierung gekommen. aber ich schloss den ToString mit() also nicht ab. Ich bin gerade noch auf Typen, aber das ist wertvolle Einsicht vorwärts ... –

+0

@AStidham: Nicht empfohlen, weil es länger ist, schwieriger zu sehen, was vor sich geht, schwieriger zu modifizieren und weniger zugänglich für die Internationalisierung. –

7

Sie können so ziemlich wie in JavaScript tun. Versuchen Sie folgendes:

Console.WriteLine(mon + "." + da + "." + yer); 

Oder Sie können WriteLine verwenden, als ob es sich um eine string.Format Aussage waren, indem Sie:

Console.WriteLine("{0}.{1}.{2}", mon, da, yer); 

, die gleich ist:

string.Format("{0}.{1}.{2}", mon, da, yer); 

Die Anzahl der Parameter sein kann unendlich, stellen Sie sicher, dass Sie diese Zahlen richtig indizieren (beginnend bei 0).

0

Geben Sie diese ein zu gehen:

string format = "{0}/{1}/{2} {3}"; 
string date = string.Format(format,mon.ToString(),da.ToString(),yer.ToString(); 
Console.WriteLine(date); 

In der Tat gibt es wahrscheinlich eine Möglichkeit, es automatisch zu formatieren, ohne es selbst zu tun.

Check out http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx

3

Wenn Sie etwas Ähnliches wie die JavaScript verwenden möchten, müssen Sie sich in Strings konvertieren:

Console.WriteLine(mon.ToString() + "." + da.ToString() + "." + yer.ToString()); 

Aber eine (viel) bessere Art der verwenden wäre Formatoption:

Console.WriteLine("{0}.{1}.{2}", mon, da, yer); 
+0

OK großartig! Danke, ich bin nicht zu einer zusammengesetzten Formatierung gekommen. aber ich schloss den ToString mit() also nicht ab. Ich bin immer noch auf Typen, aber das ist wertvolle Einsicht vorwärts ... –

11

Sie können Ihr gesamtes Programm in einer Zeile erstellen! Ja, das ist richtig, eine Zeile!

Console.WriteLine(DateTime.Now.ToString("yyyy.MM.dd")); 

Möglicherweise stellen Sie fest, dass ich nicht das gleiche Datumsformat verwendet habe wie Sie. Das liegt daran, dass Sie das internationale Datumsformat wie in this W3C document beschrieben verwenden sollten. Jedes Mal, wenn du es nicht benutzt, stirbt irgendwo ein süßes kleines Tier.

+0

Er druckt 'MM.dd.yyyy', aber die Idee ist immer noch richtig. – Servy

+2

Danke dafür, nicht bemerkt. Wird diese Antwort ändern, um ihn für seine schlechte Wahl des Datumsformats zu bestrafen. –

+2

Nicht nur eine einzelne Zeile, sondern ein einzelner Funktionsaufruf :) Console.WriteLine ("{0: yyyy.MM.dd}", DateTime.Now); –

0

einfach wie:

DateTime.Now.ToString("MM.dd.yyyy"); 

Link zu MSDN auf alle Formatierungsoptionen für DateTime.ToString() -Methode

http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx

+0

Das hat nicht funktioniert: –

+0

Dies tat zwar: DateTime thisDate1 = DateTime.Now; Console.WriteLine ("Heute ist" + thisDate1.ToString ("MMMM dd, yyyy") + "."); –

1

Sie könnten theoretisch als einfach die ganze Sache tun:

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")); 
    } 
    } 
} 
+1

Ja, das ist großartig, aber ich wollte das Datum aufteilen und die Zahlen einzeln abrufen und dann wieder zusammensetzen, aber du hast absolut recht –

1
DateTime dateTime = dateTime.Today.ToString("MM.dd.yyyy"); 

Console.Write(dateTime); 
0

Verwenden $ vor "" es erlaubt Variablen zwischen diesen Klammern

Console.WriteLine($"{mon}.{da}.{yer}"); 

Die Pro Art und Weise zu schreiben:

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

Verwandte Themen