書式 - todatetime c#
何が目的です:public static DateTime ToDateTime(DateTime値).NET Frameworkのですか? (3)
現在のBCLソースからわかるように:
public static DateTime ToDateTime(DateTime value) {
return value;
}
実際の変換はないので、これらの呼び出しを安全に削除することができます。
私は既存のプロジェクトを維持しており、このコード行が見つかりました:
Datetime someDate = ....;
var anotherDateTime = Convert.ToDateTime(someDate);
最初は、暗黙的にToString
メソッドを呼び出すことによってsomeDate
が文字列に変換されることを期待しsomeDate
が、間違っていました。 このメソッドでF12キーを押すと、 System.Convert
クラスのメソッドの定義が次のように表示されます。
// 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);
まず 、.NET Frameworkには、最初はこのようなメソッドがあります。なぜなら、このメソッドはNothingを実行しているとドキュメントに書かれているからです。
2番目のコードをリファクタリングしている間に、このメソッドの呼び出しを動作に影響を与えずに安全に削除できますか?
Convert
クラスは、 IConvertible
インターフェイスを実装する型で動作するように意図されているためです。
このインターフェイスには、実装タイプをdecimal
、 byte
、 DateTime
などのCLRタイプに変換するメソッドが含まれています。これらのタイプのそれぞれは、 IConvertible
自身を実装します。
したがって、 Convert.ToDateTime(DateTime d)
は「何もしない」唯一の方法ではありません。 Convert.ToChar(char c)
など、 IConvertible
も実装しているCLR型のいずれにも存在します。 それは、これらのタイプのすべてがIConvertible
実装しているという事実から来ます。
これについて詳しくは、 Convert
クラスのソースコードのcommentsを参照してください。
はい、削除できます。 それは完全に冗長です。 理由:私は誰かがConvert.ToDateTime(object)
(暗黙のうちに)を呼び出すのを避けることをお勧めしたいと思っていたと思います。これは、ボックス、型チェック、およびunboxを伴います。 率直に言って、それは私には愚かな理由のように、 "悪いコードを書く、悪い結果を得る"の行に沿っているようです。