SORU
19 NİSAN 2013, Cuma


Eğer Int32 sadece int için bir diğer ad ise, nasıl Int32 sınıfının bir int kullanabilir mi?

İle .tarama Sadece eğlence için .NET Framework Reference Source, NET kaynak kodu. Ve anlayamadığım bir şey buldum.

Bir yokturInt32.csC ile dosya# Int32 türü kodu. Ve nedense bu bana biraz tuhaf geldi. Nasıl yok C# derleyici Int32 türü kodu derlemek?

public struct Int32: IComparable, IFormattable, IConvertible {
    internal int m_value;

    // ... 
}

Ama bu yasadışı değil mi, C# mı? int sadece birdiğer adı içinInt32, Error CS0523 ile derlemek için başarısız gerekir:

'Struct2 alan' type 'struct1' yapı içinde bir döngü olur düzen. yapı üyesi

Derleyici bazı büyü var, ya da tamamen iz üzerinde miyim?

CEVAP
22 NİSAN 2013, PAZARTESİ


bu yasak değil mi, C# mı? Eğer "int" sadece "Int32" hata CS0523 ile derlemek için başarısız. takma adı ise Derleyici bazı büyü var mı?

Evet, hata kasten derleyici bastırılmış. Döngü denetimi ise söz konusu tür yerleşik bir tür ise tamamen atlanır.

Normalde bu tür bir şey yasadışı

struct S { S s; int i; }

Bu durumda S S boyutu boyutu ne olursa olsun, kendisi ayrıca bir int boyutuna eşit olmalıdır çünkü tanımlı değil. Böyle bir boyut yok.

struct S { S s; }

Bu durumda olan S. boyutunu anlamak için bu konuda bilgimiz yok

struct Int32 { Int32 i; }

Ama bu durumda derleyici System.Int32 çok özel bir tür olduğu için dört bayt olduğunu önceden bilir.

Derleyici yapı türleri bir dizi siklik zamanını belirler bu arada, nasıl ayrıntılarını C# son derece ilginç. Bu blog hakkında bir makale yazmak için bir noktada çalışacağım.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Dylan Brenan

    Dylan Brenan

    22 Aralık 2009
  • Goran Dimov

    Goran Dimov

    1 HAZİRAN 2014
  • infiniTuts

    infiniTuts

    18 Ocak 2012