0

プリミティブ型が System.Object から派生し、メソッドの引数としてオブジェクトに整数、文字列... を渡すなど、C# での継承について多くの人が話しているのを見てきました。私を混乱させたいくつかの質問が頭の中にあります。

1) System.Object 自体はプリミティブ型ですか?

私の理解によると、派生クラスは基本クラスの洗練されたバージョンですクラス継承図

2) System.Object は、次のようなメソッドで引数 (string,int ..) をどのようにキャッチしますか?

public void objcttest(object objct)
{
   if(objct is string)
       var strng = (string)objct;
}

3) 上の画像で定義されたクラスを使用すると、これはどういう意味ですか?

Object objct = new WorkItem(); // how is the object of the base class type instantiated with derived class type
4

1 に答える 1

6

1) system.object 自体がプリミティブ型ですか?

いいえ。 からType.IsPrimitive:

プリミティブ型は、Boolean、Byte、SByte、Int16、UInt16、Int32、UInt32、Int64、UInt64、IntPtr、UIntPtr、Char、Double、および Single です。

System.object が次のようなメソッドで引数 (string,int..) をキャッチする方法

すべての非ポインター型から への変換がありますobject

タイプ基本クラスのオブジェクトが派生クラスでインスタンス化される方法

そうではありません。次の 3 つのことを区別する必要があります。

  • 変数(あなたのobjct例では)
  • 参照(オブジェクトに到達するための単なる方法)
  • オブジェクト自体

の値はobjct参考値です。アイデアは、参照自体を実際に変更せずに、型「派生型」の式をその基本型 (またはそれが実装するインターフェイス) に変換できるということです。

これは基本的に .NET におけるポリモーフィズムの根源です。ここで真に評価するには大きすぎるトピックです。C# に関する優れた入門書を読んで、これについて十分な基礎を固めることを強くお勧めします。

于 2013-06-13T21:34:12.433 に答える