string是值类型, 为什么继承自Object而不是ValueType ?

oldhunter 2005-08-11 11:23:54
string是值类型, 为什么继承自Object而不是ValueType ?

有点不解, 还有没有其它这样的例子?
...全文
261 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
oldhunter 2005-08-12
  • 打赏
  • 举报
回复
按说string不能是在栈区, 因为它长度不一定, 只能在堆区才合理.也就是说引用类型.
oldhunter 2005-08-12
  • 打赏
  • 举报
回复
如果想改变字符引用指向的值, 好像可以用StringBuilder.
oldhunter 2005-08-12
  • 打赏
  • 举报
回复
哈哈. 一开始我试了下面的代码, 才弄错了:
string a = "aaaa";
string b = a;
b = "bbbb";
Console.WriteLine(a);
Console.WriteLine(b);

string是引用, 改变了b, a 应该变的却没有变, 我就认为string是值类型了.

现在明白了, b = "bbbb"; 并没有改变堆里的值, 而是又申请了个新单元.:)
Tony_lau111082 2005-08-12
  • 打赏
  • 举报
回复
哦,我的错

类类型定义包含数据成员、函数成员和嵌套类型的数据结构,其中数据成员包括常数和字段,函数成员包括方法、属性、事件、索引器、运算符、实例构造函数、析构函数和静态构造函数。类类型支持继承,继承是派生类可用来扩展和专门化基类的一种机制。类类型的实例是用对象创建表达式(第 7.5.10.1 节)创建的。

有关类类型的介绍详见第 10 节。

某些预定义类类型在 C# 语言中有特殊含义,如下表所示。

类类型 说明
System.Object 所有其他类型的最终基类(第 4.2.2 节)。
System.String C# 语言的字符串类型(第 4.2.3 节)。
System.ValueType 所有值类型的基类(第 4.1.1 节)。
System.Enum 所有枚举类型的基类(第 14 节)。
System.Array 所有数组类型的基类(第 12 节)。
System.Delegate 所有委托类型的基类(第 15 节)。
System.Exception 所有异常类型的基类(第 16 节)。


bin323 2005-08-12
  • 打赏
  • 举报
回复
ft! string显然不是值类型,当然不能继承自ValueType。string总是分配在managed heap里的
fanruinet 2005-08-12
  • 打赏
  • 举报
回复
晕,怎么还说是值类型

string不不不不不不不不不不不是值类型!!!
oldhunter 2005-08-11
  • 打赏
  • 举报
回复
偶知道是值类型,也知道统统是Object, 就是不明白Int32,Point,Unit什么的继承链都是通过 Object.ValueType, 为什么偏偏String直接继承自 Object?
这样有何用意 ?
fanruinet 2005-08-11
  • 打赏
  • 举报
回复
string是引用类型,不是值类型
zhongwanli 2005-08-11
  • 打赏
  • 举报
回复
是得打打基础
Tony_lau111082 2005-08-11
  • 打赏
  • 举报
回复
C#所有类型都是继承于OBJECT

你好好看看基础知识吧

虽然它是值类型

不过转化的时候都经过装箱拆箱过程



111,119

社区成员

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

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

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