SORU
9 Ocak 2013, ÇARŞAMBA


iç içe genel sınıfları anlama C# quiz

C hakkında bir doktor arkadaşımla konuşurken# bana biraz C gösterdi# çıktı tahmin ettiğim kod. Bu ilk etapta basit görünüyordu, ama değildi. Gerçekten C neden anlayamıyorum# görür bu şekilde.

Kod:

public class A<T1>
{
    public T1 a;

    public class B<T2> : A<T2>
    {
        public T1 b;

        public class C<T3> : B<T3>
        {
            public T1 c;
        }
    }
}

class Program
{
    static void Main(string[] args)
    {
        A<int>.B<char>.C<bool> o = new A<int>.B<char>.C<bool>();

        Console.WriteLine(o.a.GetType());
        Console.WriteLine(o.b.GetType());
        Console.WriteLine(o.c.GetType());

        Console.ReadKey();
    }
}

Çıktı

System.Boolean
System.Char
System.Int32

Eğer yanılıyorsam beni Düzelt, ama o.a tip B<T3> B<T2> C<T3> miras A<T2> devraldığı çünkü bool olduğunu anlıyorum. Az da olsa o.c c tipi dış sınıftan alır T1 çünkü int (sanırım) olduğunu anlayabiliyorum.

Kafamı neredeyse o.b tip char neden olduğunu anlamaya çalışırken çok ağrıyor. Bazı biri bana bunu açıklayabilir mi?

CEVAP
9 Ocak 2013, ÇARŞAMBA


Bu eski bir bilmecedir, ve oldukça zordur. Kendisi Anders verdiğim zaman cevap hakkı ilk kez çıkamadı!

İş arkadaşınız verdiğin sürüm Cyrus'un blog bence

http://blogs.msdn.com/b/cyrusn/archive/2005/08/01/446431.aspx

Biraz daha basit bir versiyonu blogumda.

http://blogs.msdn.com/b/ericlippert/archive/2007/07/27/an-inheritance-puzzle-part-one.aspx

Benim sürüm için çözüm burada

http://blogs.msdn.com/b/ericlippert/archive/2007/07/30/an-inheritance-puzzle-part-two.aspx

Kısaca, kafa karıştırıcı davranışları nedeni dış bir sınıf ve temel sınıf temel sınıf hem de var olan bir isim var o zaman "" kazandı. Eğer varsa,:

public class B
{
  public class X {}
} 
public class P
{
  public class X
  {
    public class D : B
    {
      public class N : X {}
    }
  }
}

Sonra P.X.D.N P.X B.X seçersiniz. Bulmaca iç içe aynı beyannamesi hem de üzerinden "dış" ve "base" arama yolları, ancak vardır . adlandırılabilir şekilde genel türler yapar ^em>farklıgenel inşaat nedeniyle her anlam.

Blog postları açıklamayı okuyun ve eğer hala net değil, daha spesifik bir soru sorarsan zaten.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Creavite

    Creavite

    8 Mart 2009
  • Kanál používateľa McsFuego

    Kanál použ

    12 EKİM 2011
  • Techmoan

    Techmoan

    31 Mayıs 2009