0

私が困惑しているエラーを取得します。単純なものだと思いますが、これを理解できないようです。これがエラーの原因となっているコードです。

if ((string) _nullableDateTimePicker1.Value != string.Empty && _nullableDateTimePicker1.Value != null) {
     _nullableDateTimePicker1.Value = null;
}

Windows フォームで検索ボタンをクリックすると、次のようなポップアップが表示されます。

タイプ 'System.DateTime' のオブジェクトをタイプ 'System.String' にキャストできません。

4

7 に答える 7

1

の nullable-type インスタンスの型のように見えます_nullableDateTimePicker1DateTime、これは文字列ではありません。と比較するDateTimeか、それを文字列に変換する必要があります。

したがって、最も単純な意味で:

_nullableDateTimePicker1.Value.ToString() != string.Empty

ただし、 if isHasValueが発生するため、 をチェックしないことの危険性に注意してください。だから、あなたの小切手は少し後ろ向きです。NullReferenceExceptionValuenull

それでも、そうでない null場合は があるDateTime.MinValueためToString、空の文字列は返されません。したがって、nullnull 可能なものを確認し、そうでない場合はnull(DateTime.MinValueコードに特に癖がなく、の「デフォルト」を持つ可能性がある場合を除きます。

于 2013-04-25T15:10:09.957 に答える
0

if ((string) _nullableDateTimePicker1.Value .....

おそらく、_nullableDateTimePicker1.Valuea を返しますDateTimeDateTimeメッセージが説明しているように、 aを a に直接キャストすることはできませんstring

于 2013-04-25T15:09:46.763 に答える
0

この部分(string) _nullableDateTimePicker1.Value != string.Emptyでは、値を文字列にキャストしようとしています。しかしValueですDateTime。この if の 2 番目の部分で十分です。

于 2013-04-25T15:10:05.160 に答える
0
(string) _nullableDateTimePicker1.Value

_nullableDateTimePicker1 が null の場合に例外をスローします。

(string)値が null でないかどうかを確認する場合は使用しないでください

于 2013-04-25T15:10:59.160 に答える
0

_nullableDateTimePicker1オブジェクトがNullable<DateTime>( ) のように見えDateTime?ます。この場合、文字列にキャストできないため、このエラーが発生しています。

(string) _nullableDateTimePicker1.Value

有効な DateTime があることを確認しようとしているだけのようです。その場合は、null チェックのみを行う必要があります。あなたがやろうとしていることを正確に知らなくても、それが私のアドバイスです。

于 2013-04-25T15:11:10.710 に答える
0

このコードは動作するはずです:

if (_nullableDateTimePicker1.Value != null && Convert.ToString(_nullableDateTimePicker1.Value) != string.Empty) {
     _nullableDateTimePicker1.Value = null;
}
于 2013-04-25T15:13:24.843 に答える