33 votes

Redondant pour hériter de Object en C #?

Comme indiqué ci-dessus, est-il redondant d'hériter d'Object en c #? Les deux ensembles de codes ci-dessous entraînent-ils la définition d'objets équivalents?

 class TestClassUno : Object
{
    // Stuff
}
 

contre.

 class TestClassDos
{
    // Stuff
}
 

J'ai fouillé sur MSDN mais je n'ai rien trouvé de parfaitement concluant.

33voto

JaredPar Points 333733

Si laissé non spécifié chaque class définition implicitement hériter d' System.Object de là, les deux définitions sont équivalentes.

La seule fois que ces deux serait différent si quelqu'un fait défini un autre Object type dans le même espace de noms. Dans ce cas, la définition locale de l' Object a préséance sur l'autre et de modifier l'héritage de l'objet

namespace Example {
  class Object { } 
  class C : Object { } 
}

Très bien d'un cas de coin mais ne voulait pas le montrer, si je ne l'avais pas vu avant

Notez que la même chose n'est pas vrai si vous avez utilisé object au lieu de Object. Le mot clé C# object est un alias de type pour System.Object et par conséquent, il ne serait pas correspondre Example.Object.

namespace Example2 { 
  class Object { } 
  class C : Object { } // Uses Example.Object
  class D : object { } // Uses System.Object
}

Bien sûr, si vous avez un vraiment mauvais développeur, vous pourrait encore causer de la confusion avec object

namespace System { 
  class Object { 
    private Object() { } 
  }
}

namespace Example3 {
  // This will properly fail to compile since it can't bind to the private
  // Object constructor.  This demonstrates that we are using our definition
  // of Object instead of mscorlib's 
  class C : object { } // Uses our System.Object
}

20voto

Aren Points 17843

Oui, tout hérite finalement d'un objet s'il est défini comme class . Laissez l'héritage explicite hors de votre code.

8voto

Oui, il est redondant d'hériter d'un objet en classe

8voto

Pranay Rana Points 69934

MSDN : classe d'Objet : prend en charge toutes les classes de la .NET Framework hiérarchie de classe et fournit des services de bas niveau pour les classes dérivées. C'est le summum de la classe de base de toutes les classes dans le .NET Framework; c'est la racine de la hiérarchie des types.

Cochez cette recherche : hérite de l'objet? Une enquête sur la manière.

enter image description here

6voto

Nikhil Agrawal Points 19567

Object est la mère de toutes les classes en .Net. Il n'y a rien au-dessus.

Toutes les classes en héritent. Donc, ce code

 class TestClassDos
{
    // Stuff
}
 

signifie automatiquement qu'il hérite de l'objet.

Preuve : vous pouvez transtyper n'importe quelle entité en objet, ce qui est possible si elle en hérite.

Résumé de la classe d'objets dit

 // Supports all classes in the .NET Framework class hierarchy and provides low-level
// services to derived classes. This is the ultimate base class of all classes
// in the .NET Framework; it is the root of the type hierarchy.
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X