c#引用是什么类型?

facetoface7 2007-09-08 12:56:18
“引用”保存在堆栈中,指向托管推中的堆栈, 所以应该属于是值类型,但在MSDN里面查值类型,没有找到 “引用” 这个类型。那引用是什么类型?
...全文
2144 38 打赏 收藏 转发到动态 举报
写回复
用AI写文章
38 条回复
切换为时间正序
请发表友善的回复…
发表回复
cppowner 2008-08-26
  • 打赏
  • 举报
回复
C# 不支持 & 符
好像改成 Ref 了
用起来 是不爽

如果对于类传递 堆栈 开销大
怎么处理 ?

jianshao810 2008-04-23
  • 打赏
  • 举报
回复
回去看看书吧!刚会用这个!
刚才写了一大段,现在白费了!
郁闷!
photoplan 2007-09-10
  • 打赏
  • 举报
回复
这里有两个概念:变量和对象

变量在线程堆栈上分配,并且随时消亡,对象在托管堆上分配,受垃圾收集器管理。所谓引用,是指变量引用对象,追究起来,其实是个指针。变量消失不等于对象消失,因为可能有多个变量引用同一对象。当一个变量引用一个对象时,这个变量成为这个对象的根。当对象没有根时,它就成为垃圾收集器销毁的目标。
yuyu622 2007-09-10
  • 打赏
  • 举报
回复
楼主的问题提得强,佩服.
风中的猴尾巴 2007-09-10
  • 打赏
  • 举报
回复
同意楼上的,学习中.........
BlueTrees 2007-09-10
  • 打赏
  • 举报
回复
对象本身也是值类型,而对象引用就是引用类型
------------------------------------------------------------
这句话在C#中是错误的。C#中的值类型有特殊含义,特指在栈中分配的对象(数据)。在C#中没有特别的引用类型,所谓的引用类型并没有对应的关键字,是隐含的,仅仅是概念上的,在语法上你并不能区分值类型和引用类型有什么差别。

所谓引用,是指变量引用对象,追究起来,其实是个指针。
------------------------------------------------------------
上面说过了,引用和指针是有差异的,不能把引用看成是单纯的指针,应该把引用看成是指针的应用方式。
in2ss 2007-09-10
  • 打赏
  • 举报
回复
http://community.csdn.net/Expert/topic/5750/5750805.xml?
gavinhuanghsc 2007-09-10
  • 打赏
  • 举报
回复
引用根本就不是一个类型,是一个修饰符号,和private,public的功能类似(它们限定变量的访问级别),告诉编译器怎样获得,从那里获得变量的实际值.
xray2005 2007-09-10
  • 打赏
  • 举报
回复
学习
sunny08854 2007-09-10
  • 打赏
  • 举报
回复
对象本身也是值类型,而对象引用就是引用类型
wdzr_826 2007-09-09
  • 打赏
  • 举报
回复
“引用类型”存在内存堆,值类型存在堆栈
BlueTrees 2007-09-09
  • 打赏
  • 举报
回复
引用类型和值类型。

引用和指针有差别,通常引用只可能引用在堆中的数据,不可能引用在栈中的数据,指针就不同,它可以引用任何位置的数据。引用本身的地址数据是会变动的(垃圾内存回收的时候会改动),它侧重于语意上的联系,传统的指针所包含的地址数据是不会变动的,从语意上说,不能把引用理解为包含了一个地址的“值指针”。

从编译器的角度来说,值类型是在编译的时候就能确定所在相对位置的数据(相对于栈基址的偏移)而引用,因为数据是在堆中分配的,并且是动态分配的,在编译期无法确定其确切的位置,只能栈中确定一个引用堆中数据的变量位置,这样的变量就是引用类型的。

值类型可以转换成引用类型,转换的结果就是在堆中复制了一份在栈中值类型数据的副本。在语法上,需要把变量类型声明为值类型对应的类。
JL99000 2007-09-09
  • 打赏
  • 举报
回复
引用就是一种类型
c#中大的分为值类型和引用类型
个人认为:引用类型很强悍,刚用他解决了一个问题
icyfire0105 2007-09-09
  • 打赏
  • 举报
回复
有点明白楼主的意思了,
引用是个object类型,毕竟C#是类型统一的,都能统一到object上去,
再钻牛角尖,可以认为是值类型的
个人愚见
virusswb 2007-09-09
  • 打赏
  • 举报
回复
引用不是什么具体的类型,很多都是引用类型,像类、接囗
可以理解成地址吧
zk32373139 2007-09-09
  • 打赏
  • 举报
回复
引用就是指向某一个对象吧!

aiguang 2007-09-09
  • 打赏
  • 举报
回复
引用就是引用类型啊,有什么好解释的
GoodType 2007-09-08
  • 打赏
  • 举报
回复
http://bbs.langsin.com/viewthread.php?tid=1904
heartdevil 2007-09-08
  • 打赏
  • 举报
回复
指针类型。
兔子-顾问 2007-09-08
  • 打赏
  • 举报
回复
c++里,变量有3个类型
值,指针,引用
区别就是值变量是表示堆栈上一个对象的,指针是指向任何一个对象的,可以是堆,也可以是堆栈,引用和指针类似,只是不允许指向NULL这个地方。并且引用要一开始就赋值。


c#里,因为要推出类型安全这个卖点,那就不能要指针这个祸害,动不动访问个空对象,让程序运行时候才会发现很多问题,于是用引用类型,并且是改进的引用类型。初始化一个值后还可以修改引用的对象。


c#变量就2个类型:
堆栈上的就是值类型的,还有一种就是引用。

想把值类型的放在堆栈,就要先装箱。
加载更多回复(17)

110,534

社区成员

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

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

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