Bu makale makine çevirisi ayna makalesidir, orijinal makaleye geçmek için lütfen buraya tıklayın.

Görünüm: 17968|Yanıt: 0

[Kaynak] C# burada kullanım analizi

[Bağlantıyı kopyala]
Yayınlandı 12.07.2016 11:35:43 | | |

Where cümlesi, genel bildirmelerde tanımlanan tip parametreleri için değişken olarak hizmet edebilecek tür kısıtlamalarını belirtmek için kullanılır.
1. Arayüz kısıtlamaları.
Örneğin, tür parametresi T IComparable arayüzü uygulayabilmek için genel bir sınıf MyGenericClass ilan<T> edebilirsiniz:

public class<T> MyGenericClass burada T:IComparable { }

2. Temel sınıf kısıtlaması: Bir trin, o tür için bir tür parametresi olarak kullanılabilmek üzere belirtilen sınıfı temel sınıf olarak (veya sınıfın kendisini) kullanması gerektiğini gösterir.
Böyle bir kısıtlama kullanıldıktan sonra, parametre türüne ilişkin diğer tüm kısıtlamalardan önce görünmelidir.
sınıfı MyClassy<T, U>
burada T : sınıf
burada U : struct
{
}

3.where cümlesi ayrıca yapıcı kısıtlamaları da içerebilir.
Yeni operatörü kullanarak bir tür parametresinin örneğini oluşturabilirsiniz; Ancak tip argümanı, bunun için new() yapıcı kısıtlaması tarafından kısıtlanmalıdır. new() kısıtlaması, derleyiciye sunulan herhangi bir argüman türünün erişilebilir parametresiz (veya varsayılan) bir yapıcıya sahip olması gerektiğini bildirir. Örneğin:
public class <T> MyGenericClass burada T: IComparable, new()
{
Aşağıdaki çizgi new() kısıtlama olmadan mümkün değildir:
T öğesi = yeni T();
}
New() kısıtlaması, where cümlesinin sonunda görünür.

4. Birden fazla tip parametresi için, her tür parametresi bir burada cümlesi kullanır,
Mesela:
interface MyI { }
sınıf Sözlüğü<TKey, TVal>
burada TKey: İK-Omparable, IEnumerable
burada TVal: MyI
{
public void Add(TKey key, TVal val)
{
}
}

5. Ayrıca genel yöntemlerin tip parametrelerine kısıtlamalar ekleyebilirsiniz, örneğin:

public bool MyMethod<T>(T t) burada T : IMyInterface { }

Tip parametre kısıtlamalarını tanımlamak için sözdiziminin hem delegeler hem de metodlar için aynıdygyny unutmayın:

delege T <T>MyDelegate() burada T : new()





Genel Nerede

Genel Nerede tip parametrelerini nitelikleyebilir. Birkaç yolu var.

·burada T : struct, T'nin System.ValueType'tan miras alması gereken tür parametresini kısıtlar.

·burada T: sınıf tipi kısıtlar Parametre T referans türü olmalıdır, yani System.ValueType'tan miras alınamaz.

burada T : new() tür parametresini sınırlar; T varsayılan bir yapıcıya sahip olmalıdır

·burada T : NameOfClass, T'nin bir sınıftan miras alması veya bir arayüz uygulaması gereken tür parametresini kısıtlar.

Bu nitelendirmeler birleştirilebilir, örneğin: public class Point where T : class, IComparable, new()




Önceki:c# NHibernate yardım sınıfı
Önümüzdeki:c# http, HttpListener ile konuları dinler
Feragatname:
Code Farmer Network tarafından yayımlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amaçları içindir; Yukarıdaki içerik ticari veya yasa dışı amaçlarla kullanılamaz, aksi takdirde kullanıcılar tüm sonuçları ödemelidir. Bu sitedeki bilgiler internetten alınmakta olup, telif hakkı anlaşmazlıklarının bu siteyle hiçbir ilgisi yoktur. Yukarıdaki içeriği indirmeden sonraki 24 saat içinde bilgisayarınızdan tamamen silmelisiniz. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kayıt satın alın ve daha iyi orijinal hizmetler alın. Herhangi bir ihlal olursa, lütfen bizimle e-posta yoluyla iletişime geçin.

Mail To:help@itsvse.com