📄 腾讯社区:初探c#--2.htm
字号:
<BR> first = new Node(o, first); <BR>
} <BR> class Node <BR> { <BR>
public Node Next; <BR> public object Value;
<BR> public Node(object value): this(value,
null) {} <BR> public Node(object value, Node
next) { <BR> Next = next;
<BR> Value = value;
<BR> } <BR> } <BR>} <BR><BR>class Test
<BR>{ <BR> static void Main() { <BR>
Stack s = new Stack(); <BR> for (int i = 0;
i < 10; i++) <BR> s.Push(i);
<BR> while (!s.Empty)
<BR> Console.WriteLine(s.Pop());
<BR> } <BR>} <BR>/*
<BR>stack类实现了一系列Node的实例。大家可以看看stack类的Push方法。Node的实例就是在Push方法中创建的。
<BR>就是“first = new Node(o,
first);”。请记住这个“new”噢。它就是用来创建类实例的。相关的语法太
<BR>多,遛到后面用一节详细讲。这里只是要了解自动内存管理(Automatic memory
management)好处?!“new”
<BR>是负责初始化类实例。而在c/c++中释放这些实例要用另一个关键字“delete”。但是在什么时候用delete呢,
<BR>这通常是很费神的活,老手也会阴沟里翻船。何况是俺呢!但在c#中有不用了。例子里就没有用“delete”。
<BR>当Node的实例不需要时,垃圾收集器(garbage
collector)自动销毁它,不用俺操心喽。这点到和java挺 <BR>像的(可能是抄的)。
<BR><BR>在一个test类里,俺用了一个循环,对stack类的实例的Push方法赋值十次。于是,Push创建了Node的十个实
<BR>例(instance)。然后用Pop把它们显示出来。其顺序正好与创建的顺序相反。
<BR>这个例子相当的好,是stack
<BR>的一个典型,也很好的表述了自动内存管理的机制。但也不好懂,好在这一节不是写给毫无基础的网友看的。
<BR>俺自个都花了几分钟看明白,各位大虾更是没问题。
<BR><BR>其实,当显示完了“10”以后,就会有一个Node的实例符合被释放的条件,但垃圾收集器并不一定会这样做。
<BR>也就是说,它的行为并不确定(这和java一样,俺猜)。有时候,这种行为会带来一些负面影响。起码是性
<BR>能降低。自动内存管理本身也是有问题的。因为它很难管理一些特殊情况。有一些关于java的垃圾收集器的
<BR>文章也有提到。m$也不会好得了多少。所以,m$有个不安全代码的术语(unsafe code),用来为高级用户服
<BR>务。即,用户可以不采用垃圾收集器。但必须用“unsafe”关键字显式声明之。这样就避免了用户不经意以
<BR>外使用不安全代码。下面是一个例子:*/ <BR><BR>using System; <BR>class Test
<BR>{ <BR> unsafe static void WriteLocations(byte[] arr)
{ <BR> fixed (byte *p_arr = arr) {
<BR> byte *p_elem = p_arr;
<BR> for (int i = 0; i <
arr.Length; i++) {
<BR> byte value =
*p_elem; <BR> string
addr = int.Format((int) p_elem, "X");
<BR>
Console.WriteLine("arr[{0}] at 0x{1} is {2}", i, addr,
value); <BR>
p_elem++; <BR> }
<BR> } <BR> } <BR> static void
Main() { <BR> byte[] arr = new byte[] {1, 2,
3, 4, 5}; <BR> WriteLocations(arr);
<BR> } <BR>} <BR>/*
<BR>俺对这个例子不是很满意,也让俺有点迷惑,有机会再自己写一个。很简单,只是可以用指针了!万岁!
<BR>其实,俺对这一节最没有把握了!有不少地方都不能自圆其说!所以,请各位大虾大力批评。*/<BR><BR><IMG
height=10 src="腾讯社区:初探c#--2.files/tiny3.gif" width=10
border=0> <IMG height=10 src="腾讯社区:初探c#--2.files/tiny3.gif"
width=10 border=0> <IMG height=10
src="腾讯社区:初探c#--2.files/tiny3.gif" width=10 border=0><BR><FONT
color=#568ac2></FONT><BR><FONT
color=#ff8080></FONT></TD></TR></TBODY></TABLE></TD></TR>
<TR>
<TD>
<TABLE cellSpacing=0 cellPadding=1 width="100%" align=center
bgColor=#e9f4ff border=0>
<TBODY>
<TR>
<TD class=t1 noWrap>作者:<A
href="http://search.tencent.com/cgi-bin/friend/user_show_info?ln=21847847"><IMG
height=16 src="腾讯社区:初探c#--2.files/153.gif" width=16
align=absMiddle border=0> 王志清[21847847]</A> 2000-10-19
12:02:42 </TD>
<TD noWrap align=right width="25%"><A class=edit
href="http://bbs.tencent.com/cgi-bin/bbs/bbs_post?type=r&messtype=r&back=1&groupid=102:10047&messageid=145069&begnum=0&bbegnum=20&mmessageid=263293&st=0&sc=&club=">[回复]</A>
</TD></TR></TBODY></TABLE>
<TABLE cellSpacing=5 cellPadding=5 width="100%" bgColor=#ffffff
border=0>
<TBODY>
<TR>
<TD class=content>哈哈!又抢到个前排…… <BR>Dinosaur_不用怕啦!体力会有的,呵呵!
<BR><BR><BR><IMG height=10 src="腾讯社区:初探c#--2.files/tiny3.gif"
width=10 border=0> <IMG height=10
src="腾讯社区:初探c#--2.files/tiny3.gif" width=10 border=0> <IMG
height=10 src="腾讯社区:初探c#--2.files/tiny3.gif" width=10
border=0><BR><FONT color=#568ac2></FONT><BR><FONT
color=#ff8080></FONT></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width="98%" align=center border=0
hspace="0" vspace="0">
<TBODY>
<TR>
<TD vAlign=top width=12 bgColor=#a8cbf1> </TD>
<TD width="75%" bgColor=#a8cbf1>
<TABLE cellSpacing=0 cellPadding=0 width="20%" border=0>
<TBODY>
<TR>
<TD><A class=bar2
href="http://bbs.tencent.com/cgi-bin/bbs/bbs_show_content?from=t&groupid=102:10047&messageid=145070&bbegnum=20">上一篇</A></TD>
<TD><A class=bar2
href="http://bbs.tencent.com/cgi-bin/bbs/bbs_show_content?from=t&groupid=102:10047&messageid=145068&bbegnum=20">下一篇</A></TD></TR></TBODY></TABLE></TD>
<TD align=right bgColor=#a8cbf1>
<TABLE cellSpacing=0 cellPadding=0 width=200 align=right border=0>
<TBODY>
<TR>
<TD align=right><A class=bar2
href="http://bbs.tencent.com/cgi-bin/bbs/bbs_show_my_msg?Ppage_no=">返回
<<</A></TD></TR></TBODY></TABLE></TD>
<TD vAlign=top width=12
bgColor=#a8cbf1> </TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE>
<P align=center><BR>
<DIV align=center><IFRAME marginWidth=0 marginHeight=0
src="腾讯社区:初探c#--2.files/Tencent-Default-Bott.htm" frameBorder=0 width=468
scrolling=no height=60 bordercolor="#000000"></IFRAME><BR><FONT
style="FONT-SIZE: 12pt; COLOR: #5599ff; LINE-HEIGHT: 14pt; FONT-FAMILY: Impact">Tencent</FONT><FONT
style="FONT-SIZE: 12pt; COLOR: #ff9955; LINE-HEIGHT: 14pt; FONT-FAMILY: Impact">.com</FONT>
<FONT style="FONT-SIZE: 11pt; FONT-FAMILY: 宋体" color=#000000> 腾讯科技
1998-2000(C)</FONT> <IMG height=1
src="H:\my_web\web\腾讯社区:初探c#--2.files\Count(1).gif" width=1>
<SCRIPT>document.write("<img width=0 height=0 src=http://best.netease.com/cgi-bin/log.cgi?user=oicq&refer="+escape(document.referrer)+"&cur="+escape(document.URL)+" border=0>");</SCRIPT>
</DIV></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -