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

  • B4ROK

    B4ROK

    1 EKİM 2008
  • LinusTechTips

    LinusTechTip

    25 Kasım 2008
  • Shylo Sharity

    Shylo Sharit

    27 EKİM 2011