SORU
2 Mart 2009, PAZARTESİ


C şablon ihtisas yapmak nasıl#

Nasıl C uzmanlık yapar mısın#? Bir sorun teşkil ederim. Şablon bir tip var, ne olduğu hakkında hiçbir fikrin yok. Ama aramak istediğiniz XYZ kendi türetilmiş bilmiyorsun .() alternativeFunc. Harika bir şekilde özel bir işlev veya sınıf Ara ve iade normalCall .XYZ türetilen herhangi bir tür aramak için diğer ihtisas varken. () normalFunc() alternativeFunc. Nasıl bu C olması için#?

CEVAP
2 Mart 2009, PAZARTESİ


C#, uzmanlık için en fazla-belirli bir aşırı yük kullanmaktır; ancak, bu kırılgan ve her olası kullanımı kapsamaz. Örneğin:

void Foo<T>(T value) {Console.WriteLine("General method");}
void Foo(Bar value) {Console.WriteLine("Specialized method");}

Eğer derleyici derleme türlerini bilen varsa burada, en özel seçim olacaktır:

Bar bar = new Bar();
Foo(bar); // uses the specialized method

...Ancak.

void Test<TSomething>(TSomething value) {
    Foo(value);
}

hatta bu derleme zamanında yanmış gibi TSomething=Bar Foo<T> kullanın.

Bir diğer yaklaşım türü-test kullanmaktıriçindegenel bir yöntem ancak bu genellikle kötü bir fikir olduğunu ve tavsiye edilmez.

Temelde, C# sadece senin polimorfizmi dışında uzmanlık ile çalışmak istemiyor

class SomeBase { public virtual void Foo() {...}}
class Bar : SomeBase { public override void Foo() {...}}

Burada Bar.Foo her zaman doğru geçersiz kılmak için çözümler.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Andrew_Huang

    Andrew_Huang

    10 ŞUBAT 2006
  • Anthony Le

    Anthony Le

    10 EKİM 2006
  • Michael Lummio

    Michael Lumm

    25 Mayıs 2007