Web Log di Adrian Florea

"You know you've achieved perfection in design, not when you have nothing more to add, but when you have nothing more to take away." Antoine de Saint-Exupery
posts - 440, comments - 2715, trackbacks - 3944

My Links

Archives

Post Categories

Image Galleries

.RO Blogs

.RO People

.RO Sites

Blogs

Furls

Links

vinCitori

L'unica classe che non è classe!

Una conseguenza interessante del fatto che "System.Enum is the only reference type that extends System.ValueType" (Brad Abrams, SLAR, p. 174) è quella che typeof(System.Enum).IsClass ritorna false! E' quindi l'unico tipo t all'interno del Framework per il quale l'espressione t.IsAbstract && !t.IsClass && !t.IsInterface è true!
Tutto ciò si spiega guardando l'ultima parte del codice (quella sottolineata) della proprietà IsClass:
public bool IsClass
{
  get
  {
    return ((GetAttributeFlagsImpl() & TypeAttributes.ClassSemanticsMask) == TypeAttributes.Class && !IsSubclassOf(Type.valueType));
  }
}
dove valueType è:
private static readonly Type valueType = typeof(System.ValueType);

La conclusione? La conclusione è che esiste una classe che non è classe :-) Meno male che è soltanto una. :-)

Print | posted on domenica 16 maggio 2004 20:25 | Filed Under [ Carillon .NET ]

Powered by:
Powered By Subtext Powered By ASP.NET