위에서 설명한 것처럼 C#의 Object에서 상속하는 것이 중복됩니까? 아래의 두 코드 집합 모두 동일한 개체가 정의되어 있습니까?C#에서 Object를 상속하는 중복?
class TestClassUno : Object
{
// Stuff
}
대
class TestClassDos
{
// Stuff
}
나는 MSDN에 주위 스누핑하지만 완벽 결정적인 아무것도 찾을 수 없습니다.
위에서 설명한 것처럼 C#의 Object에서 상속하는 것이 중복됩니까? 아래의 두 코드 집합 모두 동일한 개체가 정의되어 있습니까?C#에서 Object를 상속하는 중복?
class TestClassUno : Object
{
// Stuff
}
대
class TestClassDos
{
// Stuff
}
나는 MSDN에 주위 스누핑하지만 완벽 결정적인 아무것도 찾을 수 없습니다.
에 객체로부터 상속 중복 말한다.
누군가가 다른 네임 스페이스에 다른 Object
유형을 실제로 정의한 경우에만이 두 가지가 달라집니다. 이 경우 Object
의 로컬 정의가 우선 변경 아주 많이 상속 객체
namespace Example {
class Object { }
class C : Object { }
}
코너 케이스를하지만
주 전에 보지 못한 경우를 지적하지 않을 것이라고 Object
대신 object
을 사용한 경우에도 마찬가지입니다. C# 키워드 object
은 System.Object
의 별칭이므로 Example.Object
과 일치하지 않습니다.
namespace Example2 {
class Object { }
class C : Object { } // Uses Example.Object
class D : object { } // Uses System.Object
}
당신은 여전히 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
}
예, 모든 것은 궁극적으로 class
으로 정의되는 경우 개체에서 상속됩니다. 명백한 상속을 코드에서 제거하십시오.
개체는 .Net의 모든 클래스의 모체입니다. 그 위에 아무것도 없다.
모든 클래스는이 클래스를 상속합니다. 따라서이 코드
class TestClassDos
{
// Stuff
}
은 자동으로 개체를 상속한다는 의미입니다.
증명 : 당신은 그것에서 상속하는 경우 수있는 개체를 어떤 엔티티 타입 변환 할 수 있습니다. Object 클래스의
요약
// 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.
.NET의 인터페이스에서'.ToString() 아직 인터페이스는'System.Object'로부터 상속받지 않습니다. (나는 당신의 결론에 동의한다. 단지 당신이주는 증거가 아니다.) – hvd
@hvd : 그러나 궁극적으로 인터페이스는 클래스에 의해 구현 될 것이다. –
예, 또는 structs에 의해 또한'object'에서 상속됩니다. 그러나 요점은'.ToString()'을 사용할 수 있다는 사실은 컴파일러가'object'에서 실제로 상속받지 않는 몇몇 타입에 대해서조차'object'의 멤버를 추가하는 특별한 예외 때문에 발생한다는 것입니다. – hvd
예는 왼쪽으로 지정되지 않은 모든 class
정의는 암시 적으로 두 개의 정의가 동일하므로 System.Object
에서 상속됩니다 클래스
MSDN과 혼란을 일으킬 수 있습니다 진정으로 악을 개발자가있는 경우 : Object class은 : .NET Framework 클래스 계층 구조에있는 모든 클래스를 지원하고 낮은 수준의 서비스를 제공 파생 된 클래스. 이것은 .NET Framework의 모든 클래스의 궁극적 인 기본 클래스입니다. 이것은 유형 계층 구조의 루트입니다.
예, 그들은 같은 일 모두, 내가 누구의 언급 구조체를 보았다 생각하지 않는다, 그러나 모든 객체 (당신이 클래스를 선언하는 경우 그 관계없이입니다 또는 모두가 궁극적으로 객체에서 상속 구조체는)이 Object MSDN article 명시 적으로`암시 object`에서 상속하는 기본 클래스를 지정하지 않는 Structs
모든 클래스 정의에이 다른 문서를 참조하십시오. –