Se lasciato non specificato ogni definizione class
implicitamente ereditare da System.Object
quindi le due definizioni sono equivalenti.
L'unica volta che questi due sarebbero diversi è se qualcuno abbia effettivamente definito un altro tipo Object
nello stesso spazio dei nomi. In questo caso la definizione locale di Object
avrebbe la precedenza e modificare l'oggetto eredità
namespace Example {
class Object { }
class C : Object { }
}
Molto un caso d'angolo, ma non ricorda che se non avessi visto prima
Si noti che la lo stesso non è vero se hai usato object
invece di Object
. La parola chiave C# object
è un alias di tipo per System.Object
e quindi non corrisponde a Example.Object
.
namespace Example2 {
class Object { }
class C : Object { } // Uses Example.Object
class D : object { } // Uses System.Object
}
Naturalmente se si dispone di uno sviluppatore veramente male si potrebbe ancora causare confusione 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
}
Qualsiasi definizione di classe che non specifica esplicitamente una classe base erediterà da 'object' implicitamente. –