2010-12-09 14 views
8

einfach neugierig, sagt MSDN dassWarum existiert Convert.ToInt32 (DateTime)?

Aufruf dieser Methode wird immer InvalidCastException wirft.

Warum gibt es diese Überlastung im Framework? Folgt es einer Art Muster? Ich würde annehmen, dass es für die Abwärtskompatibilität besser wäre, die Überladung zu entfernen und Kompilierungsfehler statt Laufzeitausnahmen zu erhalten. Ich kann mich nicht erinnern, ob diese Methode tatsächlich in früheren Frameworks unterstützt wurde.

+0

Nun, wenn diese Methode nicht gäbe, wäre es die 'Convert.ToInt32 (Object) verwenden' Überlastung sowieso, was vermutlich die gleiche Ausnahme auslösen würde . – cdhowie

+0

Ich bin gespannt welchen Wert Sie von dieser Methode erwarten? (Millisekunden passen nicht) Auch das Muster, dem es folgt, ist, glaube ich, die gleichen Methoden, die Sie in IConvertible finden. –

+0

@Kirk, ich glaube nicht, dass das mein Punkt war. Ich frage nur, warum es existiert, auch wenn Sie es nicht benutzen können ... –

Antwort

1

Ich glaube, dass IConvertable erfordert, dass dies implementiert wird.

+4

Dies ist eine statische Methode ... – cdhowie

+0

Ich denke, die statische Methode ruft die Instanzmethode auf den Parameter, der übergeben wird hinein, dh Convert.ToInt32 (IConvertible obj) – poindexter12

+2

@poindexter: Richtig; es tut. Es sollte jedoch immer noch nicht existieren. – SLaks

4

Wie Sie in der Dokumentation in den Link sehen Sie bereitgestellt:

Bemerkungen

Diese Methode für zukünftige Verwendung reserviert ist.

Sie haben einfach keine Implementierung gefunden, mit der sie zufrieden sind oder die notwendig ist, aber sie planen, dass es so ist.

+0

eigentlich sehe ich nicht die Bemerkungen in meinem Link..hmm..aber egal, warum hat es im Framework, wenn es im Moment keinen Nutzen dafür gibt? –

+0

@Stan R. - Sie wissen, dass Sie Recht haben.Mein Browser hat es automatisch an die Version 2.0 gesendet. Die Bemerkung ist da. Meine Annahme ist, dass es heute noch relevant ist, da die Implementierung identisch ist. Als Reaktion auf Ihre andere Frage kann Ihnen nur das Implementierungsteam dieses Objekts wahrheitsgemäß sagen, aber ich vermute, dass die anderen Antworten das Zeichen nicht viel verfehlt haben, wenn überhaupt. –

+1

Ich stimme zu, ich sage nur, es ist wie die Einführung von "dynamischen" Schlüsselwort in 2.0 und sagen, es ist für die zukünftige Verwendung .. es würde nur keinen Sinn machen, oder? –

0

Ich denke, es ruft nur DateTime.IConvertible.ToInt32 Method, die wiederum für das Auslösen dieser Ausnahme verantwortlich ist. Eines Tages wird es die Umwandlung tun und Convert.ToInt32(DateTime) wird ohne Änderung arbeiten!

+2

Bis zu diesem Tag ist es nur ein kleiner Fehler. Außerdem können sie diese Überladung später immer hinzufügen. – SLaks

-1

Sie haben es einfach in die Dokumentation geschrieben, nichts besonderes. Wenn diese nicht vorhanden ist, kann die gleiche Bedingung sein:

Convert.ToInt32(Object) 
+2

das ist nicht die gleiche Bedingung .. Sie können übergeben * string * ToInt32 (Object), die funktionieren würde, aber nicht DateTime, das würde Sinn für mich, aber sie haben eine deutliche überladene Methode, die einfach nicht funktioniert. –

Verwandte Themen