nullable nesnenin bir değeri olmalıdır

İstisna açıklamasında bir çelişki var: Nullable nesnenin bir değeri olmalıdır (?!)

Sorun da bu:

Bir DateTimeExtended sınıfım var, sahip olan

{
  DateTime? MyDataTime;
  int? otherdata;

}

ve bir kurucu

DateTimeExtended(DateTimeExtended myNewDT)
{
   this.MyDateTime = myNewDT.MyDateTime.Value;
   this.otherdata = myNewDT.otherdata;
}

bu kodu çalıştırmak

DateTimeExtended res = new DateTimeExtended(oldDTE);

mesajıyla birlikte bir Geçersizİşlemİstisnası atar:

Nullable nesnenin bir değeri olmalıdır.

myNewDT.MyDateTime.Value - geçerlidir ve normal bir DateTime nesnesi içerir.

Bu mesajın anlamı nedir ve neyi yanlış yapıyorum?

OldDTEninnullolmadığına dikkat edin. MyNewDT.MyDateTime öğesinden Value öğesini kaldırdım, ancak oluşturulan bir setter nedeniyle aynı istisna atılıyor.

.value ifadesini kaldırmayı deneyin

DateTimeExtended(DateTimeExtended myNewDT)
{
   this.MyDateTime = myNewDT.MyDateTime;
   this.otherdata = myNewDT.otherdata;
}
Yorumlar (1)

Bu durumda oldDTE null'dur, bu nedenle oldDTE.Value değerine erişmeye çalıştığınızda, değer olmadığı için InvalidOperationException atılır. Örneğinizde basitçe şunu yapabilirsiniz:

this.MyDateTime = newDT.MyDateTime;
Yorumlar (1)

Üyeleri .Value kısmı olmadan doğrudan atayın:

DateTimeExtended(DateTimeExtended myNewDT)
{
   this.MyDateTime = myNewDT.MyDateTime;
   this.otherdata = myNewDT.otherdata;
}
Yorumlar (0)