C#的基础问题.关于值类型与引用类型
C#类型主要分值与引用类型,我想问大家.
class C1{
int i;//是放在堆中吗?
}
struct S1{
DataSet ds1;//是放在堆栈中吗?
}
问题点数:18、回复次数:12Top
1 楼Csgoodliness(勇敢的心)回复于 2006-03-14 10:03:54 得分 0
自己顶Top
2 楼goldenroses(俺就是大胡子,怕不。。。)回复于 2006-03-14 10:06:23 得分 0
是的Top
3 楼raulredondo()回复于 2006-03-14 10:09:04 得分 9
class C1{
int i;//是放在堆中吗?
}
放在堆里面
struct S1{
DataSet ds1;//是放在堆栈中吗?
}
如果把S1定义在类里面,那么全部都在堆里,如果S1在局部定义,那么就只是把句柄放在堆栈里面,内容仍然放在堆里Top
4 楼gguoxiangg(郭祥)回复于 2006-03-14 10:16:01 得分 0
结构体和整型是值类型放在堆中
类是引用类型放在栈中Top
5 楼Csgoodliness(勇敢的心)回复于 2006-03-14 10:16:53 得分 0
struct S1{
internal DataSet ds1;//
}
struct S2{
internal void test(){
S1 s = new S1();
s.ds1 = new DataSet();
}
}
//s 在堆栈,s.ds1 在堆中! 对吗?Top
6 楼Csgoodliness(勇敢的心)回复于 2006-03-14 10:20:13 得分 0
struct S1{
internal DataSet ds1;//
}
struct S2{
internal S1 s_;
internal void test(){
S1 s = new S1();
s.ds1 = new DataSet();
s_.ds1 = s.ds1;
}
}
//s 在堆栈,s.ds1 在堆中! 而s_ 也是在堆栈中,是这样吗?Top
7 楼Csgoodliness(勇敢的心)回复于 2006-03-14 10:29:09 得分 0
顶者有分,自己再顶一下先.Top
8 楼ThreadSharp(ThreadSharp V2006)回复于 2006-03-14 10:33:09 得分 0
raulredondo() 说法比较正确,
顶一下吧……
其实你可以仔细的想一想,C#中根本就不会有完全独立的数值类型放在栈中的,
因为它是完全面向对象的一种编程语言,这就要求所有的处理都是包含在类中的,
而在使用的时候全是引用类型的,而引用又是放在堆中的,
所以……Top
9 楼lovvver(ElephantTalk.Bright)回复于 2006-03-14 10:43:01 得分 9
class C1{
int i;//是放在堆中吗?是放在内存中的吧
}
struct S1{
DataSet ds1;//是放在堆栈中吗?是的。
}Top
10 楼HxIn_it(我爱无双)回复于 2006-03-14 11:04:38 得分 0
class 是引用类型。
struct 是值类型。
Top
11 楼hb3000(木林)回复于 2006-03-14 11:17:13 得分 0
值类型在栈中,引用类型在堆中Top
12 楼hb3000(木林)回复于 2006-03-14 11:19:29 得分 0
int i 是值类型,dataset ds 是引用类型Top




