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

  • DanceOn

    DanceOn

    6 Mayıs 2006
  • PUSHER

    PUSHER

    11 HAZİRAN 2014
  • Sparta Spartanutul

    Sparta Spart

    18 HAZİRAN 2013