System.object本身是原始的吗?

时间:2013-06-13 21:30:10

标签: c#

我见过许多人在谈论C#中的继承,就像原始类型派生自System.Object一样,他们有时会将整数,字符串...作为方法的参数传递给对象。我脑子里有几个问题使我困惑。

1)System.Object本身是原始类型吗?

根据我的理解,派生类是基类class inheritence diagram

的复杂版本

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

1 个答案:

答案 0 :(得分: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

  

如何使用Derive Class

实例化类型基类的对象

不是。你需要区分三件事:

  • 变量(示例中为objct
  • 引用(只是一种获取对象的方式)
  • 对象本身

objct的值只是一个参考。我们的想法是,您可以将“派生类型”类型的表达式转换为其基本类型(或它实现的接口),而无需实际更改引用本身。

这基本上是.NET中多态性的根源 - 而且这里的 true 正义的主题太大了;我强烈建议你阅读一本关于C#的好的入门书,以便对此有一个良好的基础。