Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
C# Genel Türler ve C++ şablonlarının her ikisi de parametreli türler için destek sağlayan dil özellikleridir. Ancak ikisi arasında birçok fark vardır. Söz dizimi düzeyinde C# genel türleri, C++ şablonlarının karmaşıklığı olmadan parametreli türler için daha basit bir yaklaşımdır. Buna ek olarak, C# C++ şablonlarının sağladığı tüm işlevleri sağlamaya çalışmaz. Uygulama düzeyinde birincil fark, C# genel tür değiştirmelerinin çalışma zamanında gerçekleştirilmesi ve genel tür bilgilerinin örneklenen nesneler için korunmasıdır. Daha fazla bilgi için bkz. Çalışma Zamanında Genel Değerler.
C# Genel Türleri ile C++ şablonları arasındaki temel farklar şunlardır:
C# genel türleri C++ şablonlarıyla aynı miktarda esneklik sağlamaz. Örneğin, kullanıcı tanımlı işleçleri çağırmak mümkün olsa da C# genel sınıfında aritmetik işleçleri çağırmak mümkün değildir.
C#, tür olmayan
template C<int i> {}
gibi şablon parametrelerine izin vermez.C# açık özelleştirmeyi desteklemez; diğer bir ifadeyle, belirli bir tür için özel bir şablon uygulamasıdır.
C# kısmi özelleştirmeyi desteklemez: tür bağımsız değişkenlerinin bir alt kümesi için özel bir uygulama.
C# tür parametresinin genel tür için temel sınıf olarak kullanılmasına izin vermez.
C# tür parametrelerinin varsayılan türlere sahip olmasını sağlamaz.
C# dilinde, genel tür parametresinin kendisi genel olamaz, ancak yapılı türler genel türler olarak kullanılabilir. C++ şablon parametrelerine izin verir.
C++, şablondaki tüm tür parametreleri için geçerli olmayabilecek koda izin verir ve daha sonra tür parametresi olarak kullanılan belirli tür için denetlenür. C# bir sınıftaki kodun, kısıtlamaları karşılayan herhangi bir türle çalışacak şekilde yazılması gerekir. Örneğin, C++ dilinde, tür parametresinin nesneleri üzerinde aritmetik işleçleri
+
ve-
kullanan bir işlev yazmak mümkündür; bu, bu işleçleri desteklemeyen bir türle şablon örneklenmesi sırasında hataya neden olur. C# buna izin vermemektedir; izin verilen tek dil yapıları, kısıtlamalardan çıkarılabilenlerdir.