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

  • BrandonHarrisWalker

    BrandonHarri

    27 Kasım 2006
  • Damien Walters

    Damien Walte

    20 AĞUSTOS 2006
  • isupportthegosselins

    isupporttheg

    6 Aralık 2009