Varsayılan olarak (nesne) 'object' öğesinin herhangi bir başvuru türü olduğunu anladığımdan, her zaman null değerini döndürür, ancak varsayılanın ne olduğunu belirleyebilir miyim? Örneğin, varsayılan (object) == new object() istiyorum; "sıfır' -Referans tipi için varsayılan değeri belirtin
cevap
sayılı default(type)
hep aynı şeyi dönecektir "bu türün sürümü". Bir referans tipi için, bu her zaman sıfır değerine ayarlanmış bir nesnenin tutamacıdır - bu da null
'a eşittir. Bir değer türü için, bu her zaman tüm üyelerin sıfıra ayarlı olduğu yapıdır.
Bu davranışı geçersiz kılma yolu yoktur; dil belirtimi bu şekilde tasarlanmıştır.
Düzenleme:
Sadece
FirstOrDefault()
demek ve bir null asla muktedir: yorumunuza gibi.
Bunu her halükarda tavsiye etmem. Kullanıcılar, null
hata durumunda FirstOrDefault()
beklerler. Kendi uzantı yönteminizi yazmak daha iyi olurdu:
static T FirstOrNewInstance<T>(this IEnumerable<T> sequence) where T : class, new()
{
return sequence.FirstOrDefault() ?? new T();
}
Üzgünüm, ...
Ama yine Jon Skeet değilim, cevap "hayır sen olamaz"
Normalde Jon Skeet nedenini (ya da neden olmasın) açıklar :) – PostMan
@PostMan, dediğim gibi, Jon Skeet değilim;). Her neyse, burada açıklanacak bir şey olduğunu sanmıyorum ... bu mümkün değil. –
Sadece uydur, iyi olacaksın :) Ama evet, katılıyorum, yapamayacağın başka bir açıklama yok. (bir tasarım kararı dışında) – PostMan
- 1. Hazırda Bekletme XML yapılandırma dosyasında varsayılan değeri belirtin
- 2. Bir parametrenin varsayılan değeri başka bir parametreye nasıl referans verebilir?
- 3. Windows Forms uygulaması için varsayılan yazı tipi
- 4. Akış tipi için varsayılan değer nasıl ayarlanır?
- 5. Weblogic/oracle'deki JDBC havuzu için varsayılan şemayı belirtin
- 6. Kısmen nitelikli isim-alanlı referans tipi
- 7. Mysql Stored Procedures Sütun Tipi Referans
- 8. Eclipse Varsayılan Yazı tipi adı
- 9. Varsayılan Xcode 4.5 yazı tipi
- 10. Varsayılan HTML yazı tipi boyutu
- 11. DataContract'ta varsayılan değeri ayarlayın?
- 12. swift: Enum tipi ve değeri
- 13. PHP 5.3 ve referans ile yeni dönüş değeri atama referans
- 14. Mockito: varsayılan döndürme değeri
- 15. OpenERP one2many varsayılan değeri
- 16. Bir comboBox extjs için varsayılan değeri yükle
- 17. C# - Bir örnek için türünün varsayılan değeri
- 18. Scala'da işlev parametresi için varsayılan değeri ayarla
- 19. PHP'deki değişkenlerin varsayılan değeri?
- 20. C++ varsayılan değişken değeri
- 21. Android tercihinin varsayılan değeri
- 22. NSPiçin sorgulamak için sorguyu belirtin
- 23. Sınıflandırılmaması için sınıfın özelliklerini belirtin
- 24. Popen için çalışma dizini belirtin
- 25. django - TestCase fikstürleri için veri tabanı belirtin
- 26. graphviz için varsayılan yazı tipi boyutunu nasıl değiştirebilirim?
- 27. Tüm Xamarin.iOS uygulaması için özel bir varsayılan yazı tipi ayarlayın.
- 28. Python yapıcısı ve varsayılan değeri
- 29. Django factoryboy, varsayılan parametre değeri
- 30. vTiger İletişim - Varsayılan Değeri Değiştir
Hayır, bu mümkün değil. Buradaki son hedefi bize anlatabilir misin, yani neden bu özelliği istersiniz? – Ani
Hayır. Neden bunu yapmak zorundasınız? Nesne boşsa, yeni bir tane atamanız yeterlidir! –
Sadece FirstOrDefault() öğesini söyleyebilmeniz ve asla boş bırakılamayacağınız. Sanırım o zaman yeni bir uzantı yöntemi yazacağım. –