Si se deja sin especificar todas las definiciones class
implícitamente heredar de System.Object
por lo tanto, las dos definiciones son equivalentes.
La única vez que estos dos serían diferentes es si alguien realmente definió otro tipo de Object
en el mismo espacio de nombres. En este caso la definición local de Object
tendría prioridad y cambiar el objeto de la herencia
namespace Example {
class Object { }
class C : Object { }
}
mucho un caso límite, pero que no señalarlo si no hubiera visto antes
Tenga en cuenta que la Lo mismo no es cierto si usaste object
en lugar de Object
. La palabra clave C# object
es un alias de tipo para System.Object
y, por lo tanto, no coincidiría con Example.Object
.
namespace Example2 {
class Object { }
class C : Object { } // Uses Example.Object
class D : object { } // Uses System.Object
}
Por supuesto, si usted tiene un desarrollador realmente mal todavía podría causar confusión con 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
}
Cualquier definición de clase que no especifica explícitamente una clase base se heredan de 'object' implícita. –