SORU
30 NİSAN 2015, PERŞEMBE


Tam olarak bir " Özel Sınıf "?

Aşağıdaki derleme gibi bir şey almak için başarısız sonra

public class Gen<T> where T : System.Array
{
}

bu hata ile

Kısıtlama olamaz özel sınıf bir Sistem.'. Dizi

Merak ediyorum, tam olarak ne başladım"Özel Sınıf"?

İnsanlar genellikle genel bir kısıtlama System.Enum belirttiğinizde hata aynı tür almak gibi görünüyor. System.Object, System.Delegate, System.MulticastDelegate ve System.ValueType da da aynı sonuçları aldım.

Bunlardan daha fazla var mı? Ben herhangi bir bilgi bulmak "özel sınıflar" C#.

Ayrıca, negenel tür bir kısıtlama olarak kullanamayız o dersleri hakkında bu kadar özel?

CEVAP
30 NİSAN 2015, PERŞEMBE


Roslyn kaynak kod, kodlanmış bir liste gibi görünüyor:

switch (type.SpecialType)
{
    case SpecialType.System_Object:
    case SpecialType.System_ValueType:
    case SpecialType.System_Enum:
    case SpecialType.System_Delegate:
    case SpecialType.System_MulticastDelegate:
    case SpecialType.System_Array:
        // "Constraint cannot be special class '{0}'"
        Error(diagnostics, ErrorCode.ERR_SpecialTypeAsBound, syntax, type);
        return false;
}

Kaynak: Binder_Constraints.cs IsValidConstraintType
GitHub arama kullanarak buldum: "A constraint cannot be special class"

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • GamingAndTech

    GamingAndTec

    16 NİSAN 2013
  • ipsy Makeup Tips

    ipsy Makeup

    19 ŞUBAT 2009
  • nemoking of kinges

    nemoking of

    4 EYLÜL 2009