c#小问题

Wijor 2009-08-19 10:15:51
在下列函数结束后,马上从内存中清除的是_________.
void Test()
{
int i = 100;int[] arr = new int[10];
string str = “this is a test”;
object r = new System.DateTime(1999,9,9);
}

A. 变量i
B. 数组变量arr
C. 变量str 所引用的字符串对象
D. 变量r 所引用的DataTime 对象


会的朋友指教下,先说声谢了....
...全文
159 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
Wijor 2009-08-19
  • 打赏
  • 举报
回复
谢了,各位.结帖了...
Wijor 2009-08-19
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 ojlovecd 的回复:]
A,B是答案,没错的,关键是要看清题目的选项
A.变量i
B. 数组变量arr
C. 变量str所引用的字符串对象
D. 变量r所引用的DataTime 对象

看以上红字部分是关键,方法内的局部变量的作用域就是方法执行完毕后生命周期就到期了,所以i,arr,str,和r这4个变量在方法执行完之后就会被清除,但如果是引用类型的话,其引用的对象将会由GC进行回收,回收的时间是不确定的,是由GC决定的,所以如果C和D改成变量str和变量r的话,那么答案就是ABCD了
[/Quote]

这答案好象是正确的...
云眸 2009-08-19
  • 打赏
  • 举报
回复
我觉得是A、B两个答案,虽然B选项是数组,但它也是int类型的......
mythad 2009-08-19
  • 打赏
  • 举报
回复
学习
cjnet 2009-08-19
  • 打赏
  • 举报
回复
答案還要加B(地址變量),但是B數據的具體 內容不是馬上釋放的
cjnet 2009-08-19
  • 打赏
  • 举报
回复
A. 变量i
B. 数组变量arr
C. 变量str 所引用的字符串对象
D. 变量r 所引用的DataTime 对象

馬上清除的是A,A是放入Thead 的Stack,所以方法結束就馬上釋放。B,C, D:由GC回收,時間不定
具體可由:
.method private hidebysig instance void Test() cil managed
{
// Code size 39 (0x27)
.maxstack 4
.locals init ([0] int32 i,
[1] int32[] arr,
[2] string str,
[3] object r)
IL_0000: nop
IL_0001: ldc.i4.s 100
IL_0003: stloc.0
IL_0004: ldc.i4.s 10
IL_0006: newarr [mscorlib]System.Int32
IL_000b: stloc.1
IL_000c: ldstr "this is a test"
IL_0011: stloc.2
IL_0012: ldc.i4 0x7cf
IL_0017: ldc.i4.s 9
IL_0019: ldc.i4.s 9
IL_001b: newobj instance void [mscorlib]System.DateTime::.ctor(int32,
int32,
int32)
IL_0020: box [mscorlib]System.DateTime
IL_0025: stloc.3
IL_0026: ret
} // end of method Form2::Test

B:newarr, C:ldstr D: newobj 分別指令,而A的指令:ldc.i4.s
lianhui1122 2009-08-19
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 ojlovecd 的回复:]
A,B是答案,没错的,关键是要看清题目的选项
A.变量i
B. 数组变量arr
C. 变量str所引用的字符串对象
D. 变量r所引用的DataTime 对象

看以上红字部分是关键,方法内的局部变量的作用域就是方法执行完毕后生命周期就到期了,所以i,arr,str,和r这4个变量在方法执行完之后就会被清除,但如果是引用类型的话,其引用的对象将会由GC进行回收,回收的时间是不确定的,是由GC决定的,所以如果C和D改成变量str和变量r的话,那么答案就是ABCD了
[/Quote]
d
我姓区不姓区 2009-08-19
  • 打赏
  • 举报
回复
A,B是答案,没错的,关键是要看清题目的选项
A. 变量i
B. 数组变量arr
C. 变量str 所引用的字符串对象
D. 变量r 所引用的DataTime 对象

看以上红字部分是关键,方法内的局部变量的作用域就是方法执行完毕后生命周期就到期了,所以i,arr,str,和r这4个变量在方法执行完之后就会被清除,但如果是引用类型的话,其引用的对象将会由GC进行回收,回收的时间是不确定的,是由GC决定的,所以如果C和D改成变量str和变量r的话,那么答案就是ABCD了
Wijor 2009-08-19
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 szzzp110 的回复:]
引用楼主 wijor 的回复:
在下列函数结束后,马上从内存中清除的是_________.
void Test()
{
  int i = 100;int[] arr = new int[10];
  string str = “this is a test”;
  object r = new System.DateTime(1999,9,9);
}

A. 变量i
B. 数组变量arr
C. 变量str 所引用的字符串对象
D. 变量r 所引用的DataTime 对象


会的朋友指教下,先说声谢了....


这种题目有意思么  说实在的以上从内存清楚的顺序很重要么
个人建议,别钻牛角尖,
[/Quote]

唉....我也不想钻牛角尖啊,关键是这是C#的考证题目,10月份得考证,要弄懂才行啊....
风之影子 2009-08-19
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 hikaliv 的回复:]
一向视答案如无物……因为出题和标答案的人,不一定比你明白……

引用 9 楼 wijor 的回复:
引用 8 楼 hikaliv 的回复:
A


数组是 IEnumerable  <>泛型,受GC管理。
object 受GC管理。
字串是受特别分配的,不受栈内存约束。


谢了啊,说的有道理,不过答案是A B啊....

[/Quote]


我顶
szzzp110 2009-08-19
  • 打赏
  • 举报
回复
[Quote=引用楼主 wijor 的回复:]
在下列函数结束后,马上从内存中清除的是_________.
void Test()
{
  int i = 100;int[] arr = new int[10];
  string str = “this is a test”;
  object r = new System.DateTime(1999,9,9);
}

A. 变量i
B. 数组变量arr
C. 变量str 所引用的字符串对象
D. 变量r 所引用的DataTime 对象


会的朋友指教下,先说声谢了....

[/Quote]
这种题目有意思么 说实在的以上从内存清楚的顺序很重要么
个人建议,别钻牛角尖,
zcw840421 2009-08-19
  • 打赏
  • 举报
回复
路过看看
Wijor 2009-08-19
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 hikaliv 的回复:]
一向视答案如无物……因为出题和标答案的人,不一定比你明白……

引用 9 楼 wijor 的回复:
引用 8 楼 hikaliv 的回复:
A


数组是 IEnumerable  <>泛型,受GC管理。
object 受GC管理。
字串是受特别分配的,不受栈内存约束。


谢了啊,说的有道理,不过答案是A B啊....

[/Quote]

呵呵.存在即有其道理....
刚上百度查了下,也有很多人是说选ABCD的...
光宇广贞 2009-08-19
  • 打赏
  • 举报
回复
一向视答案如无物……因为出题和标答案的人,不一定比你明白……

[Quote=引用 9 楼 wijor 的回复:]
引用 8 楼 hikaliv 的回复:
A


数组是 IEnumerable <>泛型,受GC管理。
object 受GC管理。
字串是受特别分配的,不受栈内存约束。


谢了啊,说的有道理,不过答案是A B啊....
[/Quote]
Wijor 2009-08-19
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 hikaliv 的回复:]
A


数组是 IEnumerable <>泛型,受GC管理。
object 受GC管理。
字串是受特别分配的,不受栈内存约束。
[/Quote]

谢了啊,说的有道理,不过答案是A B啊....
光宇广贞 2009-08-19
  • 打赏
  • 举报
回复
A


数组是 IEnumerable<>泛型,受GC管理。
object 受GC管理。
字串是受特别分配的,不受栈内存约束。
Wijor 2009-08-19
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 conan19771130 的回复:]
全部
[/Quote]

答案是A B
我也是认为函数结束后应该是会释放内存空间的,不过这题说的清除应该是指"值"吧,那么答案也应该是A才对,唉...或许答案错了吧...
lunasea0_0 2009-08-19
  • 打赏
  • 举报
回复
A
除了A以外都是引用类型,需要等待GC来回收。
A是值类型,栈毁了就直接没有了。
zhengqian529 2009-08-19
  • 打赏
  • 举报
回复
http://msdn.microsoft.com/zh-cn/library/f144e03t.aspx
Wijor 2009-08-19
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 hanhanmj 的回复:]
A,B,C,D 
[/Quote]

不对...
加载更多回复(3)
微信小程序系统教程[初级阶段],微信小程序0基础学起,讲解微信小程序开发的基础知识。 微信小程序系统教程共有“微信小程序系统教程[初级阶段]”、“微信小程序系统教程[中级阶段]——核心技术”、“微信小程序系统教程[阶段]客服消息+微信支付+九宝电商系统”。 “微信小程序系统教程[阶段]全套课程”包含: 1.微信小程序系统教程[阶段]_客服消息 2.微信小程序系统教程[阶段]_微信支付 3.微信小程序系统教程[阶段]_九宝电商系统 学习“微信小程序系统教程[阶段]”要求有微信小程序的基础。建议先学习“微信小程序系统教程[初级阶段]”、“微信小程序系统教程[中级阶段]”,后在报名“微信小程序系统教程[阶段]”。 阶段讲解的客服消息,是针对小程序的。后台程序用接近底层的技术,没有使用三方技术。这样降低同学们学习成本。 微信支付,这部分课程很有难度,要求同学们认真听讲,有不会的技术问题可以请教老师。购买课程后请联系老师,提供单号,给你源程序。 九宝电商系统是一套十分适和学习、项目的课程。既可以系统的学习微信小程序相关知识,还可以修改后上线。 “微信小程序系统教程[中级阶段]——核心技术”重点讲解微信小程序事件、组件、API 微信小程序系统教程[初级阶段],微信小程序0基础学起,讲解微信小程序开发的基础知识。 购买课程的同学,可赠送就九宝老师编写的《微信小程序开发宝典》。 购课请咨询qq2326321088

110,552

社区成员

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

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

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