null olabilecek nesnenin bir değeri olması gerekir
Özel durum açıklaması paradoks var: Null olabilecek nesnenin bir değeri olması gerekir (?!)
Sorun bu:
DateTimeExtended
Dersim var
bu vardır
{
DateTime? MyDataTime;
int? otherdata;
}
ve bir kurucu
DateTimeExtended(DateTimeExtended myNewDT)
{
this.MyDateTime = myNewDT.MyDateTime.Value;
this.otherdata = myNewDT.otherdata;
}
bu kod çalışıyor
DateTimeExtended res = new DateTimeExtended(oldDTE);
atar mesaj InvalidOperationException
bir:
Null olabilecek nesnenin bir değeri olması gerekir.
myNewDT.MyDateTime.Value
- geçerli ve DateTime
düzenli bir nesne içerir.
Bu mesajın anlamı nedir ve neyi yanlış yapıyorum?
oldDTE
null
olduğunu unutmayın. myNewDT.MyDateTime
Value
söktüm ama aynı durum oluşturulan bir pasör nedeniyle atılır.
CEVAP
Satır this.MyDateTime = myNewDT.MyDateTime.Value;
17 ** değiştirmek gerekir
Ediyor istisnası atıldı .Bir DateTime dönüş için gerekli olduğu gibi Null DateTime, (o ne sözleşme için .madem bu özellik değeri Birleşik Devletleri değeri), ama geri dönmek için DateTime yok, çünkü bunu yapamaz, bir özel durum atar.
Genel olarak, körü körüne aramak için kötü bir fikirdir .Bu değişken değeri (HasValue kontrolü gibi) içermesi GEREKEN bazı ön bilgi yoksa null olabilecek bir tür, değer.
EDİT
İşte bu bir istisna değildir DateTimeExtended için: kod
class DateTimeExtended
{
public DateTime? MyDateTime;
public int? otherdata;
public DateTimeExtended() { }
public DateTimeExtended(DateTimeExtended other)
{
this.MyDateTime = other.MyDateTime;
this.otherdata = other.otherdata;
}
}
Bu şekilde test ettim:
DateTimeExtended dt1 = new DateTimeExtended();
DateTimeExtended dt2 = new DateTimeExtended(dt1);
Ekleme .Diğer yandan değer.MyDateTime bir özel durum neden olur. Kaldırma özel durum kurtulur. Yanlış yerde arıyorsun bence.
Bir C# neden "Gönderen" para...
Gerçekten PHP? "Tartışma 1 my_fun...
Nasıl Java null olmayan ilk değeri alm...
İçerik 'android olan bir liste Gö...
Nasıl aşırı bir yöntem değişmezini par...