2011-12-05 14 views
6

へ:は、暗黙的にSystem.DateTime型を変換できませんか?私は私が手に、次のSystem.DateTimeん

inv.RSV = pid.RSVDate 

私は、次を得る:暗黙的に型のSystem.DateTimeを変換することはできませんか? System.DateTimeに。

この場合、inv.RSVはDateTimeであり、pid.RSVDateはDateTimeですか?

私は次のことを試みたが、成功しませんでした:

if (pid.RSVDate != null) 
{     

    inv.RSV = pid.RSVDate != null ? pid.RSVDate : (DateTime?)null; 
} 

pid.RSVDateがnullの場合、私はそれがnullになり、その場合には何もinv.RSV割り当てないのが好き。

答えて

15

DateTimeをnullにすることはできません。デフォルトはDateTime.MinValueです。あるいは、より簡潔に

if (pid.RSVDate.HasValue) 
{ 
    inv.RSV = pid.RSVDate.Value; 
} 

何がやりたいことは以下のとおりです。

あなたはあまりにも RSVプロパティNULL可能を作る、またはケースのデフォルト値を選択する必要があります
inv.RSV = pid.RSVDate ?? DateTime.MinValue; 
+0

inv.RSVは、最初はnullです。どのように私はそれを更新しないでくださいpid.RSVDateの値がない –

+0

@NatePet 'pid.RSVDate.HasValue'をチェックします。割り当てられた値がない場合、 'HasValue'は' false'を返します。この場合、他の値は更新されません。あなたのエラーメッセージに基づいて、 'inv.RSV'は' DateTime'です。おそらくヌル値を持つことはできません。ヌルに割り当てる場合は、型を 'DateTime? 'に変更してヌル値にしてください。 –

+0

@NatePet、 "inv.RSVはnullで始まり​​、"それについては本当ですか? DateTime **はnullにはできません** –

8

ここで、RSVDateはnullです。

inv.RSV = pid.RSVDate ?? DateTime.MinValue; 
+0

+1ヌル合体 –

1

場合は、1つはDateTimeように割り当てられているから割り当てられた1がDateTime?でされている場合、あなたは

int.RSV = pid.RSVDate.GetValueOrDefault(); 

を使用することができます。これは、デフォルト値を指定することができますオーバーロードをサポートしていますDateTimeのデフォルトは理想的ではありません。

pid.RSVDateがnullの場合、 の場合はnullになりますが、inv.RSVには割り当てません。

int.RSVはnullではありません。ヌル入力可能タイプではなく、既にDateTimeとなっています。それはあなたによって割り当てされることはありませんならば、それはDateTime.MinValueであることのタイプのデフォルト値を持っている、または1月1日になる、0001

inv.RSVで始まる場合はnullでした。私はpid.RSVDate

再び

の値がないことを更新しない方法を言うか、これは単には、プロパティのあなたの説明与えられ、することはできません。しかし、一般的に言えば、をpid.RSVDateがヌルの場合に更新したくない場合は、割り当ての前後でifチェックを書くだけです。

if (pid.RSVDate != null) 
{ 
    inv.RSV = pid.RSVDate.Value; 
} 
2

inv.RSVはNULL可能フィールドではないため、NULLにすることはできません。オブジェクトを初期化すると、デフォルトのinvになります。空のDateTime、あなたがそう

inv.RSV = new DateTime() 

を言った場合は、pid.RSVにinv.RSVを設定したい場合、それはNULLではありません、またはデフォルトのDateTime値である場合、それがnullになるだろうと同じにRSV RSVDatenullある場合inv.RSVは、だから何が起こるかしないのに対し、

inv.RSV = pid.RSVDate.GetValueOrDefault() 
0

pid.RSVDateは、nullである可能性があります、これを行いますか?

あなたは値が前にnullであるかどうかを確認する必要があります -

if(pid.RSVDate.HasValue) 
    inv.RSV = pid.RSVDate.Value; 

しかしRSVDateがnullの場合inv.RSVの価値は何でしょうか? は常にになりますか?その場合は、??演算子を使用して、必要に応じてデフォルトを割り当てることができます。

pid.RSV = pid.RSVDate ?? myDefaultDateTime; 
関連する問題