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
}