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

  • Jejoab

    Jejoab

    4 NİSAN 2008
  • Michael Neal

    Michael Neal

    2 Mayıs 2009
  • Vladimir Jenko

    Vladimir Jen

    1 Mart 2010