我见过许多人在谈论C#中的继承,就像原始类型派生自System.Object一样,他们有时会将整数,字符串...作为方法的参数传递给对象。我脑子里有几个问题使我困惑。
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
答案 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#的好的入门书,以便对此有一个良好的基础。