2014-01-23 7 views
11
// 
// Summary: 
//  Returns the specified System.DateTime object; no actual conversion is performed. 
// 
// Parameters: 
// value: 
//  A date and time value. 
// 
// Returns: 
//  value is returned unchanged. 
public static DateTime ToDateTime(DateTime value); 

Warum hat System.ConvertToDateTime, die DateTime akzeptiert?Warum hat System.Convert ToDateTime, das DateTime akzeptiert?

Die Methodendokumentation gibt an, dass der Wert unverändert bleibt.

+1

Ich könnte mir vorstellen, Konsistenz zu halten, vor allem für die Reflexion. Stellen Sie sich vor, Sie verwenden die 'Convert'-Klasse, um ein' Objekt' in ein 'DateTime' zu ​​konvertieren; Sie kennen ihren Eingabetyp nicht. Es kann ein paar verschiedene Typen _included_ 'DateTime' geben, aber anstatt diesen speziellen Fall zu überprüfen, haben die BCL-Designer entschieden, diese Methode aus Konsistenzgründen beizubehalten, anstatt Ausnahmen auszulösen. Dies kann auch mit den anderen Typen gesehen werden (z. B. 'Convert.ToDouble (double)') –

+1

Es ist kein Einzelfall. Praktisch alle 'ToXXX'-Methoden für die einfachen eingebauten Typen haben eine Überladung, die einen Wert desselben Typs akzeptiert. –

+0

Außerdem gibt es eine Methode namens ['String.ToString()'] (http://msdn.microsoft.com/en-us/library/8tc6ws5s%28v=vs.110%29.aspx) übrigens ':) ' –

Antwort

3

Konvention, Vorhersagbarkeit und weil die IConvertable die Methode ToDateTime definiert.

Mein Glaube ist, dass unter der Decke System.Convert einfach alle Kombinationen der IConvertable-Klassen durchläuft. in der Tat

+1

tatsächlich System.Convert in To .. Methoden hat zwei Optionen zu tun: 1. Cast angegebene Wert auf IConvertible Schnittstelle und Aufruf gebundene Methode, dh ToDateTime. 2. Rufen Sie > .Parse für eine an eine Methode übergebene Zeichenfolge auf. – zabulus

2

Der eigentliche Code ist:

public static DateTime ToDateTime(DateTime value) 
{ 
    return value; 
} 

Dies bestätigt der Wert unverändert sein wird. Es gibt viele Konvertierungsmethoden. Ich denke, es ist da, nur weil es alle primitiven Objekte in den Signaturen akzeptieren sollte.

I.e. Bei der Verwendung von Reflektionen wäre es unerwartet, wenn eine Konvertierung von DateTime zu DateTime nicht unterstützt wird.

Verwandte Themen