Heterojen bir koleksiyon için yazılan bir arama yardımcı işlevi istiyorum: Bir öğe veya sınıf döndürmeli, yoksa öğe bulunamazsa null. Aşağıda önemsiz bir koleksiyon arama kullanarak bir örnek, ancak bir veritabanı çağrısı veya her ne olabilir.Sınıf veya null yapıya dönebilen genel koleksiyon arama yöntemi nasıl uygulanır?
Bunu tek bir yöntem imzasıyla gerçekleştirmenin herhangi bir yolu var mı? Daha önce de denedim ne
public T GetClass<T>(string key) where T : class
{
object o;
if (Contents.TryGetValue(key, out o))
{
return o as T;
}
return null;
}
public T? GetStruct<T>(string key) where T : struct
{
object o;
if (Contents.TryGetValue(key, out o))
{
if (o is T)
{
return (T?) o;
}
}
return null;
}
:
- Ben jenerik kısıtlamalar aşırı yükleri belirginleştirmek için kullanılan edilemez anlıyoruz. Bu yüzden bu iki yönteme aynı ismi veremem.
(Default) T
döndürme bir seçenek değildir, çünkü 0 geçerli bir int değerdir.- Tür olarak
<int ?>
numaralı telefonu arayarak denedim, ancak tartışıldığı gibi,Nullable<T>
bir başvuru türü değil.
Kutulu bir ürünü iade edeceğimi belirtmenin bir yolu var mı?
Yarım böyle - ama "' getClass 'olarak diyoruz ve 0 verilecek * o * tanır 0 "ve" bulunamadı "değerleriyle birlikte bulundu. Gerçekten de, örnek kullanımınızda ikinci '' 'hatalarını kaçırıp oldukça ince bir hata elde edebilirsiniz. ('sonuç1' * asla * boş olamaz, ama olmasını beklersiniz) –
Int için varsayılanı düşünüyorum? null – akatakritos
Ama ne aradığınız değer düzenli bir int ise: b (o int?) bc int başarısız olacağını düşünüyorum? int değil – akatakritos