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

  • Doc Adams

    Doc Adams

    20 HAZİRAN 2007
  • Dumb Stupid Videos

    Dumb Stupid

    26 Kasım 2013
  • Nightmare2005

    Nightmare200

    14 Ocak 2007