那位大侠能帮我解释关于C#值类型,不是都是继承的object吗,怎么继承下来成了值类型,object不是引用类型
答案:4 悬赏:0 手机版
解决时间 2021-04-09 22:17
- 提问者网友:轻浮
- 2021-04-09 14:52
谢谢各位,不过我问的不是值类型和引用类型的区别,而是object不是对象的基类吗,所有C#类型都继承自object,为什么从object一路继承下来,类类型变成了值类型?
最佳答案
- 五星知识达人网友:詩光轨車
- 2021-04-09 15:04
C#的类都是继承object是引用类型,值类型例外。
引用类型和值类型的区别:
值类型是复制值操作的。
int a, b;
a=0;
b=a; // b和a同时为0
a=1; // b依旧为0, a为1
引用类型:
class tt
{
public string s;
}
tt a, b;
a = new tt();
a.s="aa";
b = a; // b指向a, b.s="aa"
a.s = "nb"; // b指向a, b.s="nb"
可以看出引用对象发生变化后,变量指向的内容也自动发生变化
引用类型和值类型的区别:
值类型是复制值操作的。
int a, b;
a=0;
b=a; // b和a同时为0
a=1; // b依旧为0, a为1
引用类型:
class tt
{
public string s;
}
tt a, b;
a = new tt();
a.s="aa";
b = a; // b指向a, b.s="aa"
a.s = "nb"; // b指向a, b.s="nb"
可以看出引用对象发生变化后,变量指向的内容也自动发生变化
全部回答
- 1楼网友:舍身薄凉客
- 2021-04-09 17:19
值类型继承自system.valuetype类
valuetype 用更合适的值类型实现重写 object 中的虚方法。请参见从 valuetype 继承的 enum。
数据类型分隔为值类型和引用类型。值类型要么是堆栈分配的,要么是在结构中以内联方式分配的。引用类型是堆分配的。引用类型和值类型都是从最终的基类 object 派生出来的。当值类型需要充当对象时,就在堆上分配一个包装(该包装能使值类型看上去像引用对象一样),并且将该值类型的值复制给它。该包装被加上标记,以便系统知道它包含一个值类型。这个进程称为装箱,其反向进程称为取消装箱。装箱和取消装箱能够使任何类型像对象一样进行处理。
- 2楼网友:时间的尘埃
- 2021-04-09 16:28
object 是基本类型,在你继承的时候,应该是用值类型继承的,那就会转换为值类型,用引用类型继承的,就会转换为引用类型,你可以定义object 类型的,继承来就还是object类型的。
- 3楼网友:山河有幸埋战骨
- 2021-04-09 15:40
c#是强类型语言 硬式转换就好了。具体来说
常用方法:
方法1:
object i = 10;
int j = (int)i;
方法2:
object i = 10;
int j = Convent.Toint32(i);
object是引用类型的
引用类型与值类型的区别在于引用类型被其他变量赋值,该引用类型的地址将指向赋给它值的变量,所以赋给它值的变量变化,引用类型也就变化。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯