32

上記のように、C# で Object から継承するのは冗長ですか? 以下の両方のコード セットで、同等のオブジェクトが定義されますか?

class TestClassUno : Object
{
    // Stuff
}

対。

class TestClassDos
{
    // Stuff
}

私は MSDN を調べましたが、完全に決定的なものを見つけることができませんでした。

4

7 に答える 7

33

指定されていない場合、すべてのclass定義は暗黙的に継承されるSystem.Objectため、2 つの定義は同等です。

これら 2 つの値が異なるのは、誰かが実際に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
}
于 2012-05-24T17:01:19.227 に答える
20

はい、 として定義されている場合、すべてが最終的にオブジェクトから継承されclassます。コードから明示的な継承を除外します。

于 2012-05-24T16:58:23.870 に答える
8

MSDN:オブジェクトクラス:.NET Frameworkクラス階層内のすべてのクラスをサポートし、派生クラスに低レベルのサービスを提供します。これは、.NETFrameworkのすべてのクラスの究極の基本クラスです。これは、型階層のルートです。

この調査を確認してください:オブジェクトから継承しますか?方法の調査。

ここに画像の説明を入力してください

于 2012-05-24T17:05:06.750 に答える
8

はい、クラスのオブジェクトから継承するのは冗長です

于 2012-05-24T17:00:35.760 に答える
6

オブジェクトは、.Net のすべてのクラスの母です。その上には何もありません。

すべてのクラスはそれを継承します。だからこのコード

class TestClassDos
{
    // Stuff
}

オブジェクトから継承していることを自動的に意味します。

証明: 任意のエンティティをオブジェクトに型キャストできます。これは、継承している場合に可能です。

オブジェクトクラスの要約は言う

// 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.
于 2012-05-24T17:00:02.713 に答える
2

はい、どちらも同じものです。構造体について言及している人はいないと思いますが、すべてのオブジェクト(クラスまたは構造体を宣言するかどうかに関係なく)はすべて最終的にObjectから継承します。このObjectMSDNの記事とこれを参照してください。 Structsに関する他の記事

于 2012-05-24T17:22:37.533 に答える