C#初学者的问题。。关于装箱与拆箱与子类和父类

happy61 2009-03-03 08:03:20
问题1:
我看书装箱是这样子

int t = 100;
object = t;

很奇怪,为什么object可以等于t??

我查msdn说:.NET Framework 类层次结构中的所有类,并为派生类提供低级别服务。这是 .NET Framework 中所有类的最终基类;它是类型层次结构的根。

那么就是说object是所有.net框架的父类?

那么怎样可以父类=子类?

---------------------------------------------
问题2:
有没有情况是可以

父类=子类??

---------------------------------------------

问题3:
想问一下C#中的

OleDbCommand tmp;
OleDbCommand tmp2 = new OleDbCommand(sqlstr, db2);

tmp = tmp2;
这样是否成立?算是按值传递还是按指针传递??



...全文
349 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
LiDongguang1013 2009-03-04
  • 打赏
  • 举报
回复
int t=100;
object=(object)t;
其实就是把T转换为object型
BEN254422571 2009-03-04
  • 打赏
  • 举报
回复
int t = 100;
object = t;
你要理解int t = 100; 是内容开辟了两个内存空间一个是t(int 类型)而这个内存空间引用另一个存放100的空间
object 是所以类的父类!而t是它的子类而t因为是object 的子类继承了object 并拥有了父类的特性~~~~那一个
object 父类对象引用一个子类!!由于子类包含了父类的特性所以父类可以引用子类实例!!!
dxpws 2009-03-04
  • 打赏
  • 举报
回复
装箱
wolf1118baby 2009-03-04
  • 打赏
  • 举报
回复
我建议你看msdn帮助!
amwsse21q 2009-03-04
  • 打赏
  • 举报
回复
好基础的问题 .. 来 看看
冷月孤峰 2009-03-04
  • 打赏
  • 举报
回复
int t = 100;
object = t;
在.net中object是超类,所以子类当然能赋值给父类 ,
其实在赋值的同时t已经隐式转换了,可以看看隐式转换和显式转换。
ZHOUGE 2009-03-04
  • 打赏
  • 举报
回复
int t=100;
object=(object)t;
隐式转换的
任何类型变量都可以转换为object类型
zl11244515 2009-03-03
  • 打赏
  • 举报
回复
我是新手,也来学学。。
guo_jianwen 2009-03-03
  • 打赏
  • 举报
回复
面象对象要表现出多态性,你说怎么表现的?应该是把子类的实例赋给父类表现的吧,问题3的是引用赋值,与struct的赋值不同,struct是值赋值
cswat 2009-03-03
  • 打赏
  • 举报
回复
上面的已经分析的可以了, 楼主,基础的东西一定要扎实哦
yinsuxia 2009-03-03
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 bomdy 的回复:]
1. 是的,object是所有类的基类,int类型也是一个类,因此可以object obj = t;,变量obj是类,现在保存了一个Int32类的实例t

2. 父类=子类 任何时候都成立,就像黑人白人中的任何人都是“人”一样

3. tmp = tmp2; 成立,是引用传递,C#中一般不使用指针,只有在unsafe代码中才用
[/Quote]
说得对!!
天乐 2009-03-03
  • 打赏
  • 举报
回复
来晚了,只好看看

参考前几天的一次大讨论吧,四星五星都上了

http://topic.csdn.net/u/20090228/22/2ae369ec-2531-44ad-9c0e-d3b7ed1658d5.html
erwalove 2009-03-03
  • 打赏
  • 举报
回复
object是所有类的基类!在了解拆箱和装箱前最好先把值类型跟引用类型弄清楚!
erwalove 2009-03-03
  • 打赏
  • 举报
回复
object是所有类的基类!在了解拆箱和装箱前最好先把值类型跟引用类型弄清楚!
鱼C缸 2009-03-03
  • 打赏
  • 举报
回复
基础要捞哟
tommir3 2009-03-03
  • 打赏
  • 举报
回复
好问题,东西明白,但一较真就叫不准了,基础太松,
我复习一下
j147933783 2009-03-03
  • 打赏
  • 举报
回复
上面的任何一个人都说的是对的。这都是很基础的东西了,多看看书
笺香 2009-03-03
  • 打赏
  • 举报
回复
int t=100;
object=(object)t;
隐式转换的
任何类型变量都可以转换为object类型

子类is 父类。
就是说子类一定是父类,而子类有的东西父类不一定有。
shiboss 2009-03-03
  • 打赏
  • 举报
回复
三楼正解
wuyq11 2009-03-03
  • 打赏
  • 举报
回复
object是所有类超类,子类当然能赋值给父类
OleDbCommand tmp2 = new OleDbCommand(sqlstr, db2); 是引用传递,传递对象地址
http://www.cnblogs.com/anytao/archive/2007/05/28/must_net_09.html
加载更多回复(4)

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧