1

Dがあり、それがdatetimeタイプであることを確認したい場合、次の間に違いはありますか?

  1. DateTime dtm = Convert.ToDateTime(D)
  2. DateTime dtm = (DateTime)D

1は変換ですが、2はキャストですか?(特定の点で2はより軽い操作だと思いますか?)
2ではなく1を使用する必要があるのはいつですか?


編集

(質問のコンテキスト)

DはのセルからのものDataTableです。私がやっていることは、(を介して)日付であるセルを見つけて、それをxlに移動する前に結果に関数をdatatable.columnname適用することです。ToOADateしたがって、drが私の場合はDataRowView、次のいずれかの選択肢があります。

//Convert
DateTime dtm;
dtm = Convert.ToDateTime(dr[i - 1]);
xlWorkSheet.Cells[rowCount, i].value = dtm.ToOADate();

//Cast
DateTime dtm;
dtm = (DateTime)dr[i - 1];
xlWorkSheet.Cells[rowCount, i].value = dtm.ToOADate();
4

2 に答える 2

6

Convert.ToDateTime他のタイプをに変換するいくつかのオーバーロードがありますDateTime。これは、DateTimeではないインスタンスをDateTimeインスタンスに変換するときに使用する必要があります。DateTime.Parseandを使用することもできますDateTime.TryParse(文字列表現を解析しようとしている場合)。

(DateTime)Dインスタンスをに直接キャストしようとしますDateTime。インスタンスがまだDateTime呼び出しの前にない場合は、例外がスローされます。

于 2013-03-25T14:45:51.977 に答える
1

「Convert」クラスを使用すると、実際に異なるタイプ間で変換できます。たとえば、文字列を日時に変換できます。キャストは同じタイプでのみ機能します。したがって、文字列をInt32にキャストすることはできません。これにより、キャスト例外が発生します。

例について:Dのコンテンツが常にDateTimeタイプである場合、キャストは非常に高速であるため、キャストすることをお勧めします。D内のタイプがわからない場合(おそらくオブジェクトタイプであるため)、このメソッドでは文字列(Date文字列)またはInt32(ティック)による。

于 2013-03-25T15:20:01.117 に答える