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

  • BumbleDroid

    BumbleDroid

    18 EKİM 2010
  • RFS Dan

    RFS Dan

    22 Temmuz 2014
  • taliajoy18

    taliajoy18

    12 Temmuz 2011