??xml version="1.0" encoding="utf-8" standalone="yes"?>中文字幕亚洲第一在线,亚洲无吗在线视频,avtt天堂网手机版亚洲http://www.tkk7.com/Inn-Gry/自己选择的\Q跪着也要走完zh-cnSat, 10 May 2025 10:19:57 GMTSat, 10 May 2025 10:19:57 GMT60C下不用中间变量交换两个变量?/title><link>http://www.tkk7.com/Inn-Gry/archive/2011/10/11/360955.html</link><dc:creator>灰色客栈</dc:creator><author>灰色客栈</author><pubDate>Tue, 11 Oct 2011 05:19:00 GMT</pubDate><guid>http://www.tkk7.com/Inn-Gry/archive/2011/10/11/360955.html</guid><wfw:comment>http://www.tkk7.com/Inn-Gry/comments/360955.html</wfw:comment><comments>http://www.tkk7.com/Inn-Gry/archive/2011/10/11/360955.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/Inn-Gry/comments/commentRss/360955.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/Inn-Gry/services/trackbacks/360955.html</trackback:ping><description><![CDATA[<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; "> 1</span> <span style="color: #000000; ">#include</span><span style="color: #000000; "><</span><span style="color: #000000; ">stdio.h</span><span style="color: #000000; ">></span><span style="color: #000000; "><br /></span><span style="color: #008080; "> 2</span> <span style="color: #000000; "><br /></span><span style="color: #008080; "> 3</span> <span style="color: #000000; "></span><span style="color: #0000FF; ">void</span><span style="color: #000000; "> inplace_swap(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> </span><span style="color: #000000; ">*</span><span style="color: #000000; ">, </span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> </span><span style="color: #000000; ">*</span><span style="color: #000000; ">);<br /></span><span style="color: #008080; "> 4</span> <span style="color: #000000; "></span><span style="color: #0000FF; ">void</span><span style="color: #000000; "> main(){<br /></span><span style="color: #008080; "> 5</span> <span style="color: #000000; ">    </span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> a </span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #000000; ">10</span><span style="color: #000000; ">;<br /></span><span style="color: #008080; "> 6</span> <span style="color: #000000; ">    </span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> b </span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #000000; ">20</span><span style="color: #000000; ">;<br /></span><span style="color: #008080; "> 7</span> <span style="color: #000000; ">    <br /></span><span style="color: #008080; "> 8</span> <span style="color: #000000; ">    inplace_swap(</span><span style="color: #000000; ">&</span><span style="color: #000000; ">a, </span><span style="color: #000000; ">&</span><span style="color: #000000; ">b);<br /></span><span style="color: #008080; "> 9</span> <span style="color: #000000; ">    system(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">pause</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br /></span><span style="color: #008080; ">10</span> <span style="color: #000000; ">}<br /></span><span style="color: #008080; ">11</span> <span style="color: #000000; "><br /></span><span style="color: #008080; ">12</span> <span style="color: #000000; "></span><span style="color: #0000FF; ">void</span><span style="color: #000000; "> inplace_swap(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> </span><span style="color: #000000; ">*</span><span style="color: #000000; ">x, </span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> </span><span style="color: #000000; ">*</span><span style="color: #000000; ">y){<br /></span><span style="color: #008080; ">13</span> <span style="color: #000000; ">    </span><span style="color: #000000; ">*</span><span style="color: #000000; ">x </span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #000000; ">*</span><span style="color: #000000; ">x </span><span style="color: #000000; ">^</span><span style="color: #000000; "> </span><span style="color: #000000; ">*</span><span style="color: #000000; ">y;<br /></span><span style="color: #008080; ">14</span> <span style="color: #000000; ">    printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">%d, %d\n</span><span style="color: #000000; ">"</span><span style="color: #000000; ">, </span><span style="color: #000000; ">*</span><span style="color: #000000; ">x, </span><span style="color: #000000; ">*</span><span style="color: #000000; ">y);<br /></span><span style="color: #008080; ">15</span> <span style="color: #000000; ">    <br /></span><span style="color: #008080; ">16</span> <span style="color: #000000; ">    </span><span style="color: #000000; ">*</span><span style="color: #000000; ">y </span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #000000; ">*</span><span style="color: #000000; ">x </span><span style="color: #000000; ">^</span><span style="color: #000000; "> </span><span style="color: #000000; ">*</span><span style="color: #000000; ">y;<br /></span><span style="color: #008080; ">17</span> <span style="color: #000000; ">    printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">%d, %d\n</span><span style="color: #000000; ">"</span><span style="color: #000000; ">, </span><span style="color: #000000; ">*</span><span style="color: #000000; ">x, </span><span style="color: #000000; ">*</span><span style="color: #000000; ">y);<br /></span><span style="color: #008080; ">18</span> <span style="color: #000000; ">    <br /></span><span style="color: #008080; ">19</span> <span style="color: #000000; ">    </span><span style="color: #000000; ">*</span><span style="color: #000000; ">x </span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #000000; ">*</span><span style="color: #000000; ">x </span><span style="color: #000000; ">^</span><span style="color: #000000; "> </span><span style="color: #000000; ">*</span><span style="color: #000000; ">y;    <br /></span><span style="color: #008080; ">20</span> <span style="color: #000000; ">    printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">%d, %d\n</span><span style="color: #000000; ">"</span><span style="color: #000000; ">, </span><span style="color: #000000; ">*</span><span style="color: #000000; ">x, </span><span style="color: #000000; ">*</span><span style="color: #000000; ">y);<br /></span><span style="color: #008080; ">21</span> <span style="color: #000000; ">}</span></div><img src ="http://www.tkk7.com/Inn-Gry/aggbug/360955.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/Inn-Gry/" target="_blank">灰色客栈</a> 2011-10-11 13:19 <a href="http://www.tkk7.com/Inn-Gry/archive/2011/10/11/360955.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Windows下用命令行~译链接q行CE序http://www.tkk7.com/Inn-Gry/archive/2011/10/10/360918.html灰色客栈灰色客栈Mon, 10 Oct 2011 15:51:00 GMThttp://www.tkk7.com/Inn-Gry/archive/2011/10/10/360918.htmlhttp://www.tkk7.com/Inn-Gry/comments/360918.htmlhttp://www.tkk7.com/Inn-Gry/archive/2011/10/10/360918.html#Feedback0http://www.tkk7.com/Inn-Gry/comments/commentRss/360918.htmlhttp://www.tkk7.com/Inn-Gry/services/trackbacks/360918.htmlW一步,下蝲安装DEV-CPP软gQ?br />W二步,扑ֈ扑ֈ安装目录下的bin文g夹;
W?/span>?/span>步,bin文g夹目录添加到Pathpȝ变量中即配置成功Q?br />
新徏一个CE序源文Ӟ讑֐字ؓ(f)hello.c

W四步,开?>q行->输入cmd回RQ进入控制台Q进入源文g所在的目录

输入命o(h)gcc hello.c -g -o xxxQxxx即ؓ(f)~译q接后可q行的文件名
敲击回R键后Q就可以q行~译后得E序Qxxx.exe
在命令行中敲入xxx卛_q行CE序获得q行l果?br />
在运行中很可能出现屏q一闪而过的现象,q时候只要在E序的最后加上语句:(x)system("pause");卛_解决

灰色客栈 2011-10-10 23:51 发表评论
]]>
字符~码http://www.tkk7.com/Inn-Gry/archive/2011/10/10/360911.html灰色客栈灰色客栈Mon, 10 Oct 2011 12:13:00 GMThttp://www.tkk7.com/Inn-Gry/archive/2011/10/10/360911.htmlhttp://www.tkk7.com/Inn-Gry/comments/360911.htmlhttp://www.tkk7.com/Inn-Gry/archive/2011/10/10/360911.html#Feedback0http://www.tkk7.com/Inn-Gry/comments/commentRss/360911.htmlhttp://www.tkk7.com/Inn-Gry/services/trackbacks/360911.htmlhttp://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf-8.html   原作者:(x)
阮一?br />

今天中午Q我H然x清楚Unicode和UTF-8之间的关p,于是开始在|上查资料?/span>

l果Q这个问题比我想象的复杂Q从午饭后一直看到晚?点,才算初步搞清楚?/span>

下面是我的W记Q主要用来整理自q思\。但是,我尽量试囑ֆ得通俗易懂Q希望能对其他朋友有用。毕竟,字符~码是计机技术的基石Q想要熟l用计机Q就必须懂得一点字W编码的知识?/span>

1. ASCII?/strong>

我们知道Q在计算机内部,所有的信息最l都表示Z个二q制的字W串。每一个二q制位(bitQ有0?两种状态,因此八个二进制位可以组合出256U状态,q被UCؓ(f)一个字节(byteQ。也是_(d)一个字节一共可以用来表C?56U不同的状态,每一个状态对应一个符P是256个符P?000000?1111111?/span>

上个世纪60q代Q美国制定了(jin)一套字W编码,对英语字W与二进制位之间的关p,做了(jin)l一规定。这被称为ASCII码,一直沿用至今?/span>

ASCII码一p定了(jin)128个字W的~码Q比如空?#8220;SPACE”?2Q二q制00100000Q,大写的字母A?5Q二q制01000001Q。这128个符P包括32个不能打印出来的控制W号Q,只占用了(jin)一个字节的后面7位,最前面?位统一规定??/span>

2、非ASCII~码

p?28个符L(fng)码就够了(jin)Q但是用来表C其他语aQ?28个符h不够的。比如,在法语中Q字母上Ҏ(gu)注音W号Q它?yu)无法用ASCII码表C。于是,一些欧z国家就军_Q利用字节中闲置的最高位~入新的W号。比如,法语中的é的编码ؓ(f)130Q二q制10000010Q。这样一来,q些Ƨ洲国家使用的编码体p,可以表示最?56个符受?/span>

但是Q这里又出现?jin)新的问题。不同的国家有不同的字母Q因此,哪怕它们都使用256个符L(fng)~码方式Q代表的字母却不一栗比如,130在法语编码中代表?#233;Q在希伯来语~码中却代表?jin)字母Gimel (ג)Q在俄语~码中又?x)代表另一个符受但是不怎样Q所有这些编码方式中Q?—127表示的符h一L(fng)Q不一L(fng)只是128—255的这一Dc(din)?/span>

至于亚洲国家的文字,使用的符号就更多?jin),汉字多?0万左叟뀂一个字节只能表C?56U符P肯定是不够的Q就必须使用多个字节表达一个符受比如,体中文常见的~码方式是GB2312Q用两个字节表CZ个汉字,所以理Z最多可以表C?56x256=65536个符受?/span>

中文~码的问题需要专文讨论,q篇W记不涉?qing)。这里只指出Q虽焉是用多个字节表示一个符P但是GBcȝ汉字~码与后文的Unicode和UTF-8是毫无关pȝ?/span>

3.Unicode

正如上一节所_(d)世界上存在着多种~码方式Q同一个二q制数字可以被解释成不同的符受因此,要想打开一个文本文Ӟ必ȝ道它的编码方式,否则用错误的~码方式解读Q就?x)出Cؕ码。ؓ(f)什么电(sh)子邮件常常出Cؕ码?是因ؓ(f)发信人和收信Z用的~码方式不一栗?/span>

可以惌Q如果有一U编码,世界上所有的W号都纳入其中。每一个符号都l予一个独一无二的编码,那么q问题׃(x)消失。这是UnicodeQ就像它的名字都表示的,q是一U所有符L(fng)~码?/span>

Unicode当然是一个很大的集合Q现在的规模可以容纳100多万个符受每个符L(fng)~码都不一P比如QU+0639表示阿拉伯字母AinQU+0041表示p的大写字母AQU+4E25表示汉字“?#8221;。具体的W号对应表,可以查询unicode.orgQ或者专门的汉字对应?/span>?/span>

4. Unicode的问?/strong>

需要注意的是,Unicode只是一个符号集Q它只规定了(jin)W号的二q制代码Q却没有规定q个二进制代码应该如何存储?/span>

比如Q汉?#8220;?#8221;的unicode是十六进制数4E25Q{换成二进制数?5位(100111000100101Q,也就是说q个W号的表C需?个字节。表C其他更大的W号Q可能需?个字节或?个字节,甚至更多?/span>

q里有两个严重的问题,W一个问题是Q如何才能区别unicode和asciiQ计机怎么知道三个字节表示一个符P而不是分别表CZ个符号呢Q第二个问题是,我们已经知道Q英文字母只用一个字节表C就够了(jin)Q如果unicodel一规定Q每个符L(fng)三个或四个字节表C,那么每个英文字母前都必然有二C个字节是0Q这对于存储来说是极大的费Q文本文件的大小?x)因此大Z三倍,q是无法接受的?/span>

它们造成的结果是Q?Q出C(jin)unicode的多U存储方式,也就是说有许多种不同的二q制格式Q可以用来表Cunicode?Qunicode在很长一D|间内无法推广Q直C联网的出现?/span>

5.UTF-8

互联|的普及(qing)Q强烈要求出CU统一的编码方式。UTF-8是在互联网上用最q的一Uunicode的实现方式。其他实现方式还包括UTF-16和UTF-32Q不q在互联|上基本不用?/span>重复一遍,q里的关pLQUTF-8是Unicode的实现方式之一?/strong>

UTF-8最大的一个特点,是它是一U变长的~码方式。它可以使用1~4个字节表CZ个符PҎ(gu)不同的符可(g)变化字节长度?/span>

UTF-8的编码规则很单,只有二条Q?/span>

1Q对于单字节的符P字节的第一位设?Q后?位ؓ(f)q个W号的unicode码。因此对于英语字母,UTF-8~码和ASCII码是相同的?/span>

2Q对于n字节的符Pn>1Q,W一个字节的前n位都设ؓ(f)1Q第n+1位设?Q后面字节的前两位一律设?0。剩下的没有提及(qing)的二q制位,全部个符L(fng)unicode码?/span>

下表ȝ?jin)编码规则,字母x表示可用~码的位?/span>

UnicodeW号范围 | UTF-8~码方式
(十六q制) | Q二q制Q?/span>
--------------------+---------------------------------------------
0000 0000-0000 007F | 0xxxxxxx
0000 0080-0000 07FF | 110xxxxx 10xxxxxx
0000 0800-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx
0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

下面Q还是以汉字“?#8221;ZQ演C如何实现UTF-8~码?/span>

已知“?#8221;的unicode?E25Q?00111000100101Q,Ҏ(gu)上表Q可以发?E25处在W三行的范围内(0000 0800-0000 FFFFQ,因此“?#8221;的UTF-8~码需要三个字节,x式是“1110xxxx 10xxxxxx 10xxxxxx”。然后,?#8220;?#8221;的最后一个二q制位开始,依次从后向前填入格式中的xQ多出的位补0。这样就得到?jin)?#8220;?#8221;的UTF-8~码?#8220;11100100 10111000 10100101”Q{换成十六q制是E4B8A5?/span>

6. Unicode与UTF-8之间的{?/strong>

通过上一节的例子Q可以看?#8220;?#8221;的Unicode码是4E25QUTF-8~码是E4B8A5Q两者是不一L(fng)。它们之间的转换可以通过E序实现?/span>

在Windowsq_下,有一个最单的转化Ҏ(gu)Q就是用内|的C本小E序Notepad.exe。打开文g后,点击“文g”菜单中的“另存?#8221;命o(h)Q会(x)跛_一个对话框Q在最底部有一?#8220;~码”的下拉条?/span>

bg2007102801.jpg

里面有四个选项QANSIQUnicodeQUnicode big endian ?UTF-8?/span>

1QANSI是默认的~码方式。对于英文文件是ASCII~码Q对于简体中文文件是GB2312~码Q只针对Windows体中文版Q如果是J体中文版会(x)采用Big5码)(j)?/span>

2QUnicode~码指的是UCS-2~码方式Q即直接用两个字节存入字W的Unicode码。这个选项用的little endian格式?/span>

3QUnicode big endian~码与上一个选项相对应。我在下一节会(x)解释little endian和big endian的涵义?/span>

4QUTF-8~码Q也是上一节谈到的~码Ҏ(gu)?/span>

选择?#8221;~码方式“后,点击”保存“按钮Q文件的~码方式q刻{换好?jin)?/span>

7. Little endian和Big endian

上一节已l提刎ͼUnicode码可以采用UCS-2格式直接存储。以汉字”?#8220;ZQUnicode码是4E25Q需要用两个字节存储Q一个字节是4EQ另一个字节是25。存储的时候,4E在前Q?5在后Q就是Big endian方式Q?5在前Q?E在后Q就是Little endian方式?/span>

q两个古怪的名称来自英国作家斯威夫特的《格列佛(jng)游记》。在该书中,h国里爆发?jin)内战,战争起因是h们争论,吃鸡蛋时I竟是从大头(Big-Endian)敲开q是从小?Little-Endian)敲开。ؓ(f)?jin)这件事情,前后爆发了(jin)六ơ战争,一个皇帝送了(jin)命,另一个皇帝丢?jin)王位?/span>

因此Q第一个字节在前,是”大头方式“QBig endianQ,W二个字节在前就?#8221;头方式“QLittle endianQ?/span>

那么很自然的Q就?x)出C个问题:(x)计算机怎么知道某一个文件到底采用哪一U方式编码?

Unicode规范中定义,每一个文件的最前面分别加入一个表C编码顺序的字符Q这个字W的名字叫做”零宽度非换行I格“QZERO WIDTH NO-BREAK SPACEQ,用FEFF表示。这正好是两个字节,而且FF比FE??/span>

如果一个文本文件的头两个字节是FE FFQ就表示该文仉用大头方式;如果头两个字节是FF FEQ就表示该文仉用小头方式?/span>

8. 实例

下面QD一个实例?/span>

打开”C?#8220;E序Notepad.exeQ新Z个文本文Ӟ内容是一?#8221;?#8220;字,依次采用ANSIQUnicodeQUnicode big endian ?UTF-8~码方式保存?/span>

然后Q用文本~辑软gUltraEdit?/span>?#8221;十六q制功能“Q观察该文g的内部编码方式?/span>

1QANSIQ文件的~码是两个字节“D1 CF”Q这正是“?#8221;的GB2312~码Q这也暗CGB2312是采用大头方式存储的?/span>

2QUnicodeQ编码是四个字节“FF FE 25 4E”Q其?#8220;FF FE”表明是小头方式存储,真正的编码是4E25?/span>

3QUnicode big endianQ编码是四个字节“FE FF 4E 25”Q其?#8220;FE FF”表明是大头方式存储?/span>

4QUTF-8Q编码是六个字节“EF BB BF E4 B8 A5”Q前三个字节“EF BB BF”表示q是UTF-8~码Q后三个“E4B8A5”是“?#8221;的具体编码,它的存储序与编码顺序是一致的?/span>



灰色客栈 2011-10-10 20:13 发表评论
]]>
Java中的一个有实?/title><link>http://www.tkk7.com/Inn-Gry/archive/2011/10/10/360361.html</link><dc:creator>灰色客栈</dc:creator><author>灰色客栈</author><pubDate>Mon, 10 Oct 2011 02:45:00 GMT</pubDate><guid>http://www.tkk7.com/Inn-Gry/archive/2011/10/10/360361.html</guid><wfw:comment>http://www.tkk7.com/Inn-Gry/comments/360361.html</wfw:comment><comments>http://www.tkk7.com/Inn-Gry/archive/2011/10/10/360361.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/Inn-Gry/comments/commentRss/360361.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/Inn-Gry/services/trackbacks/360361.html</trackback:ping><description><![CDATA[一直很惌验一下对象创建时候两个类循环调用?x)用什么后果,今天做了(jin)一下,果然和想象的一下,下面贴出自己的实验代码:(x)<br /><br />实验中d需要三个类Q?br />W一个类Q?br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; ">1</span> <span style="color: #0000FF; ">public</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">class</span><span style="color: #000000; "> Test_A {<br /></span><span style="color: #008080; ">2</span> <span style="color: #000000; ">    </span><span style="color: #0000FF; ">public</span><span style="color: #000000; "> Test_A(){<br /></span><span style="color: #008080; ">3</span> <span style="color: #000000; ">    Test_B b </span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">new</span><span style="color: #000000; "> Test_B();<br /></span><span style="color: #008080; ">4</span> <span style="color: #000000; ">    System.out.println(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">A is created!</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br /></span><span style="color: #008080; ">5</span> <span style="color: #000000; ">    }<br /></span><span style="color: #008080; ">6</span> <span style="color: #000000; ">}</span></div><br />W二个类Q?br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; ">1</span> <span style="color: #0000FF; ">public</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">class</span><span style="color: #000000; "> Test_B {<br /></span><span style="color: #008080; ">2</span> <span style="color: #000000; ">    </span><span style="color: #0000FF; ">public</span><span style="color: #000000; "> Test_B(){<br /></span><span style="color: #008080; ">3</span> <span style="color: #000000; ">    Test_A b </span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">new</span><span style="color: #000000; "> Test_A();<br /></span><span style="color: #008080; ">4</span> <span style="color: #000000; ">    System.out.println(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">B is created!</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br /></span><span style="color: #008080; ">5</span> <span style="color: #000000; ">    }<br /></span><span style="color: #008080; ">6</span> <span style="color: #000000; ">}</span></div>上面两个cd实例化的时候都需要实例化Ҏ(gu)Q也pq里形成?jin)@环调用,下面看看试c:(x)<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; ">1</span> <span style="color: #0000FF; ">public</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">class</span><span style="color: #000000; "> Test {<br /></span><span style="color: #008080; ">2</span> <span style="color: #000000; ">    </span><span style="color: #0000FF; ">public</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">static</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">void</span><span style="color: #000000; "> main(String[] args) {<br /></span><span style="color: #008080; ">3</span> <span style="color: #000000; ">    </span><span style="color: #008000; ">//</span><span style="color: #008000; "> TODO Auto-generated method stub</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">4</span> <span style="color: #008000; "></span><span style="color: #000000; ">    Test_A a </span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">new</span><span style="color: #000000; "> Test_A();<br /></span><span style="color: #008080; ">5</span> <span style="color: #000000; ">    }<br /></span><span style="color: #008080; ">6</span> <span style="color: #000000; ">}</span></div>大家现在可以猜一猜实验运行结果(昨天看到一片帖子也是说q个问题的,当时有h说不?x)出现@环调用)(j)<br /><br />一下是在Eclipse中的实验l果Q?br /><div><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">Exception in thread </span><span style="color: #000000; ">"</span><span style="color: #000000; ">main</span><span style="color: #000000; ">"</span><span style="color: #000000; "> java.lang.StackOverflowError<br />        at Test_B.</span><span style="color: #000000; "><</span><span style="color: #000000; ">init</span><span style="color: #000000; ">></span><span style="color: #000000; ">(Test_B.java:</span><span style="color: #000000; ">4</span><span style="color: #000000; ">)<br />    at Test_A.</span><span style="color: #000000; "><</span><span style="color: #000000; ">init</span><span style="color: #000000; ">></span><span style="color: #000000; ">(Test_A.java:</span><span style="color: #000000; ">4</span><span style="color: #000000; ">)<br />    at Test_B.</span><span style="color: #000000; "><</span><span style="color: #000000; ">init</span><span style="color: #000000; ">></span><span style="color: #000000; ">(Test_B.java:</span><span style="color: #000000; ">4</span><span style="color: #000000; ">)<br />    at Test_A.</span><span style="color: #000000; "><</span><span style="color: #000000; ">init</span><span style="color: #000000; ">></span><span style="color: #000000; ">(Test_A.java:</span><span style="color: #000000; ">4</span><span style="color: #000000; ">)<br />    at Test_B.</span><span style="color: #000000; "><</span><span style="color: #000000; ">init</span><span style="color: #000000; ">></span><span style="color: #000000; ">(Test_B.java:</span><span style="color: #000000; ">4</span><span style="color: #000000; ">)<br />    at Test_A.</span><span style="color: #000000; "><</span><span style="color: #000000; ">init</span><span style="color: #000000; ">></span><span style="color: #000000; ">(Test_A.java:</span><span style="color: #000000; ">4</span><span style="color: #000000; ">)<br />    at Test_B.</span><span style="color: #000000; "><</span><span style="color: #000000; ">init</span><span style="color: #000000; ">></span><span style="color: #000000; ">(Test_B.java:</span><span style="color: #000000; ">4</span><span style="color: #000000; ">)<br />    at Test_A.</span><span style="color: #000000; "><</span><span style="color: #000000; ">init</span><span style="color: #000000; ">></span><span style="color: #000000; ">(Test_A.java:</span><span style="color: #000000; ">4</span><span style="color: #000000; ">)<br />    at Test_A.</span><span style="color: #000000; "><</span><span style="color: #000000; ">init</span><span style="color: #000000; ">></span><span style="color: #000000; ">(Test_A.java:</span><span style="color: #000000; ">4</span><span style="color: #000000; ">)<br />    at Test_B.</span><span style="color: #000000; "><</span><span style="color: #000000; ">init</span><span style="color: #000000; ">></span><span style="color: #000000; ">(Test_B.java:</span><span style="color: #000000; ">4</span><span style="color: #000000; ">)<br />    at Test_A.</span><span style="color: #000000; "><</span><span style="color: #000000; ">init</span><span style="color: #000000; ">></span><span style="color: #000000; ">(Test_A.java:</span><span style="color: #000000; ">4</span><span style="color: #000000; ">)<br />    at Test_B.</span><span style="color: #000000; "><</span><span style="color: #000000; ">init</span><span style="color: #000000; ">></span><span style="color: #000000; ">(Test_B.java:</span><span style="color: #000000; ">4</span><span style="color: #000000; ">)<br />    at Test_A.</span><span style="color: #000000; "><</span><span style="color: #000000; ">init</span><span style="color: #000000; ">></span><span style="color: #000000; ">(Test_A.java:</span><span style="color: #000000; ">4</span><span style="color: #000000; ">)<br />    at Test_B.</span><span style="color: #000000; "><</span><span style="color: #000000; ">init</span><span style="color: #000000; ">></span><span style="color: #000000; ">(Test_B.java:</span><span style="color: #000000; ">4</span><span style="color: #000000; ">)<br />    at Test_A.</span><span style="color: #000000; "><</span><span style="color: #000000; ">init</span><span style="color: #000000; ">></span><span style="color: #000000; ">(Test_A.java:</span><span style="color: #000000; ">4</span><span style="color: #000000; ">)<br />    at Test_B.</span><span style="color: #000000; "><</span><span style="color: #000000; ">init</span><span style="color: #000000; ">></span><span style="color: #000000; ">(Test_B.java:</span><span style="color: #000000; ">4</span><span style="color: #000000; ">)<br />    at Test_A.</span><span style="color: #000000; "><</span><span style="color: #000000; ">init</span><span style="color: #000000; ">></span><span style="color: #000000; ">(Test_A.java:</span><span style="color: #000000; ">4</span><span style="color: #000000; ">)<br />    at Test_B.</span><span style="color: #000000; "><</span><span style="color: #000000; ">init</span><span style="color: #000000; ">></span><span style="color: #000000; ">(Test_B.java:</span><span style="color: #000000; ">4</span><span style="color: #000000; ">)<br />    at Test_A.</span><span style="color: #000000; "><</span><span style="color: #000000; ">init</span><span style="color: #000000; ">></span><span style="color: #000000; ">(Test_A.java:</span><span style="color: #000000; ">4</span><span style="color: #000000; ">)<br />    at Test_B.</span><span style="color: #000000; "><</span><span style="color: #000000; ">init</span><span style="color: #000000; ">></span><span style="color: #000000; ">(Test_B.java:</span><span style="color: #000000; ">4</span><span style="color: #000000; ">)<br />    at Test_A.</span><span style="color: #000000; "><</span><span style="color: #000000; ">init</span><span style="color: #000000; ">></span><span style="color: #000000; ">(Test_A.java:</span><span style="color: #000000; ">4</span><span style="color: #000000; ">)<br />    at Test_B.</span><span style="color: #000000; "><</span><span style="color: #000000; ">init</span><span style="color: #000000; ">></span><span style="color: #000000; ">(Test_B.java:</span><span style="color: #000000; ">4</span><span style="color: #000000; ">)</span></div></div>整个输出H口全部被占?br /><br />和预期的一P真的产生?jin)@环调用,q且出现?jin)栈溢出异常Q!<img src ="http://www.tkk7.com/Inn-Gry/aggbug/360361.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/Inn-Gry/" target="_blank">灰色客栈</a> 2011-10-10 10:45 <a href="http://www.tkk7.com/Inn-Gry/archive/2011/10/10/360361.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java实现单的Listhttp://www.tkk7.com/Inn-Gry/archive/2011/10/10/360358.html灰色客栈灰色客栈Mon, 10 Oct 2011 02:29:00 GMThttp://www.tkk7.com/Inn-Gry/archive/2011/10/10/360358.htmlhttp://www.tkk7.com/Inn-Gry/comments/360358.htmlhttp://www.tkk7.com/Inn-Gry/archive/2011/10/10/360358.html#Feedback0http://www.tkk7.com/Inn-Gry/comments/commentRss/360358.htmlhttp://www.tkk7.com/Inn-Gry/services/trackbacks/360358.html
 1 //定义数据l构
 2 public class LinkNode {
 3     int value;
 4     LinkNode next;
 5     
 6     public LinkNode(int value){
 7     this.value = value;
 8     }
 9
 }
以上是定义的链表节点Q可以在新徏节点的时候赋?br />
链表节点Q?br />
public class MyList {
    
//定义首节?/span>
    LinkNode first;
    
    
//定义节?/span>
    LinkNode last;
    
    
//定义长度
    int length = 0;
    
    
public MyList(){
    first 
= null;
    last 
= null;
    }
    
    
public MyList(LinkNode node){
    first 
= node;
    last 
= node;
    length
++;
    }
    
    
//d节点
    public void addNode(LinkNode node){
    
if(first == null){
        first 
= node;
        length 
= 1;
    }
    
else{
        last.next 
= node;
        last 
= node;
        length
++;
    }
    }
    
    
//删除指定节点:遍历链表Q将遇到的第一个和指定节点相同的节点删?/span>
    public void deleteNode(LinkNode node){
    
if(first == null){
        
return;
    }
        
    
else if(first.value == node.value){
        first 
= first.next;
        length
--;
    }
    
else{
        
//如果链表不ؓ(f)I,要删除也不是W一?/span>
        LinkNode temp;
        System.out.println(node.value);
        
for(temp = first; temp != null ;temp = temp.next){
        
if(temp.next.value == node.value){
            
//如果下一个就是最后一?/span>
            if(temp.next.equals(last)){
            last 
= temp;
            length
--;
            
return;
            }
            length
--;
            temp.next 
= temp.next.next;
            
return;
        }
        }
    }
    }
    
    
public int getLength(){
    
return length;
    }
}
以上是链表的具体实现Q这里只实现?jin)很单的三个功能Q添加节点,删除指定节点Q获取链表长度?br />
接下来是试代码Q?br />

public class Test {
    
public static void main(String[] args) {
    LinkNode node 
= new LinkNode(3);
    
    MyList list 
= new MyList(node);
    
    list.addNode(
new LinkNode(3));
    list.addNode(
new LinkNode(6));
    list.addNode(
new LinkNode(4));
    list.addNode(
new LinkNode(7));
    list.addNode(
new LinkNode(2));
    
    listDisplay(list);
    
    list.deleteNode(
new LinkNode(3));
    listDisplay(list);
    }
    
    
public static void listDisplay(MyList list){
    
int i = 0;
    
int length = list.getLength();
    LinkNode temp;
    
for(temp = list.first; i < length; temp = temp.next, i++){
        System.out.print(temp.value 
+ " ");
    }
    System.out.println();
    }
}
以下是输出结果:(x)
3 3 6 4 7 2 
3 6 4 7 2 

E序有待改善的地方:(x)
1.完善链表功能Q比如插入功能(和添加什么的大同异Q;
2.加强功能实现Q可以通过一定的手段消除First的特D性,使得实现更加单;
3.可以使用泛型Q是的链表的存储不局限于IntegercdQ?br />

灰色客栈 2011-10-10 10:29 发表评论
]]>
Android之Urihttp://www.tkk7.com/Inn-Gry/archive/2011/10/07/360135.html灰色客栈灰色客栈Fri, 07 Oct 2011 11:31:00 GMThttp://www.tkk7.com/Inn-Gry/archive/2011/10/07/360135.htmlhttp://www.tkk7.com/Inn-Gry/comments/360135.htmlhttp://www.tkk7.com/Inn-Gry/archive/2011/10/07/360135.html#Feedback0http://www.tkk7.com/Inn-Gry/comments/commentRss/360135.htmlhttp://www.tkk7.com/Inn-Gry/services/trackbacks/360135.html阅读全文

灰色客栈 2011-10-07 19:31 发表评论
]]>
C#之委?/title><link>http://www.tkk7.com/Inn-Gry/archive/2011/09/01/357713.html</link><dc:creator>灰色客栈</dc:creator><author>灰色客栈</author><pubDate>Thu, 01 Sep 2011 07:30:00 GMT</pubDate><guid>http://www.tkk7.com/Inn-Gry/archive/2011/09/01/357713.html</guid><wfw:comment>http://www.tkk7.com/Inn-Gry/comments/357713.html</wfw:comment><comments>http://www.tkk7.com/Inn-Gry/archive/2011/09/01/357713.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/Inn-Gry/comments/commentRss/357713.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/Inn-Gry/services/trackbacks/357713.html</trackback:ping><description><![CDATA[从一开始接触C#到现在,委托Ҏ(gu)来说都是一道坎Q曾l想要避开Q可是每ơ写、看C#E序都避免不?jin)接触这玩意儿,每次都?x)觉得很憋屈!所以这几天想下点苦功夫一下子d搞懂它,下面说说自己的见解吧~~<br /><br /><span style="font-size: 14pt; ">一、什么是委托</span><br />对于q个词,一开始接触的时候很陌生Q这也导致了(jin)我的畏惧?j)理Q后来学?fn)设计模式的时候知道了(jin)委托模型Q当时也不怎么搞的明白Q现在冷?rn)下来自q看,q里也算入门?jin)。委托,说白?jin)就是一U?span class="Apple-style-span" style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; line-height: normal; ">相当于c++函数指针的东东(如果对C++函数指针不熟的话q就{于白说?jin)啊Q还是看下面的例子吧Q)(j)~<br />首先看一下委托的额声明例子:(x)</span><span id="uoxzbkc" class="Apple-style-span" style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; line-height: normal; color: red; "> public void delegate Delete_Delegate(string args);委托的声明中有两个东西是非常重要的,W一个是voidQ也是q个委托可以注册Q代表)(j)的函数的q回|其次便是argsQ这个是该委托可以注册(代表Q的函数所使用的参数。换句话_(d)所有的以string为参敎ͼ以void回|q里暂时q么_(d)(j)的函数都是可以通过q个委托q行注册的!<br /></span><span id="lzxkxas" class="Apple-style-span" style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; line-height: normal; ">我想看到q个大家应该很有感触了(jin)Q一个方法,除了(jin)Ҏ(gu)名,最能标志它的东西无非就是返回值和参数Q至于修饰符Q后面再提,所以委托可以说是抓住了(jin)Ҏ(gu)的核?j)成分,|于Ҏ(gu)名么Q这个自然好理解Q如果把Ҏ(gu)名也通过委托表现出来Q那׃需要委托的存在?jin),其实后面q有一个用处,那就是多播委托~后面再讲</span><span id="rqhsakj" class="Apple-style-span" style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; line-height: normal; color: red; "><br /><br /></span><span id="kysfwvu" class="Apple-style-span" style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; line-height: normal; font-size: 14pt; ">二、委托的使用</span><span id="bpcpgjt" class="Apple-style-span" style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; line-height: normal; font-size: 12pt; "><br /></span><span id="thjanfi" class="Apple-style-span" style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; line-height: normal; ">委托的用分Z个步骤:(x)1.委托声明  2.委托注册  3.委托调用</span><span id="nbzxzcb" class="Apple-style-span" style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; line-height: normal; ">a. 委托声明QD个例子:(x)</span><span id="okizmaz" class="Apple-style-span" style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; line-height: normal; color: #ff0000; ">public void delegate Print(string name)</span><span id="ldxkiwd" class="Apple-style-span" style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; line-height: normal; ">;解说同上Q?br /><br /></span><span id="ftvxnts" class="Apple-style-span" style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; line-height: normal; ">b. 委托注册Q现在假设有一个函敎ͼ(x)<br /></span><span id="umvigui" class="Apple-style-span" style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; line-height: normal; color: #333333; ">    </span><span id="svizxwg" class="Apple-style-span" style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; line-height: normal; color: #808080; ">public void speakEnglish(string say){<br /></span><span id="cusqhvj" class="Apple-style-span" style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; line-height: normal; color: #808080; ">            Console.WriteLine(say);<br /></span><span id="kcwnedv" class="Apple-style-span" style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; line-height: normal; color: #808080; ">    }</span><span id="hzmgilo" class="Apple-style-span" style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; line-height: normal; color: #333333; "><br /></span><span id="uivegui" class="Apple-style-span" style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; line-height: normal; ">注册Ҏ(gu)QPrint english = new Print(speakEnglish);<br />解说Q委托其实可以被看作是一个特D的c,很明显,q里声明的就是该cȝ实例englishQ我们再注意一下这里的构造函数所使用的参敎ͼ它是一个方法名Q该Ҏ(gu)必须和委托声明的Ҏ(gu){֐一_(d)否则?x)抛出异常;上面只是一U注册方式,q有其他便捷的方法~<br /><br />c. 委托调用Qenglish("hello"); q个时候控制台便会(x)输出hello字符Q委托调用成功!<br /><br /><br />#########################################华丽丽的分割U?############################################<br /><br /></span><span id="potvihv" class="Apple-style-span" style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; line-height: normal; ">以上所描述的是最最基本的委托用过E,接下来引甛_来,l箋深入<br /><br /></span><span id="pkmzxad" class="Apple-style-span" style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; line-height: normal; font-size: 14pt; ">三、多播委?/span><span id="vjhuwvu" class="Apple-style-span" style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; line-height: normal; "><br />多播委托对于委托实现其h(hun)值来说真的是很重要的Q比如在事g监听中的使用?br /></span><span id="qigikqt" class="Apple-style-span" style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; line-height: normal; color: red; ">多播委托的特点:(x)<br /></span><span id="epvirqp" class="Apple-style-span" style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; line-height: normal; ">1Q多播委托,֐思义Q就是说可以通过委托一ơ调用一个以上的Ҏ(gu)Q?br />2Q多播委托声明时必须q回voidQ否则会(x)抛出异常Q?br />3Q多播委托一旦遇C个函数抛出异常,则会(x)停止执行剩余的函敎ͼQ这个是可以解决的)(j)<br />q里也可以体?x)到Z么不需要把Ҏ(gu)名通过委托表现出来的原因?br /><br />下面举一个多播委托的例子Qgl上面的例子Q注Q多播委托和一般委托的声明q没有什么决定性区别,唯一要注意的是上面说的特点2Q?br />假设q有一个方法:(x)<br />   </span><span id="tsfsqth" class="Apple-style-span" style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; line-height: normal; color: #808080; "> public void speakChinese(string say){<br /></span><span id="ewyluiw" class="Apple-style-span" style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; line-height: normal; color: #808080; ">        Console.WriteLine(say);<br /></span><span id="pduwuxh" class="Apple-style-span" style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; line-height: normal; color: #808080; ">    }<br /></span><span id="hmuzmpo" class="Apple-style-span" style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; line-height: normal; ">下面需要同时调用两个方法,那么怎么通过多播委托实现呢?<br /></span><span id="iaywqiw" class="Apple-style-span" style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; line-height: normal; color: #808080; ">    </span><span id="nqoqhgy" class="Apple-style-span" style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; line-height: normal; color: #ff0000; ">Print print = new Print(speakEnlish);<br /></span><span id="tdigpoj" class="Apple-style-span" style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; line-height: normal; color: #ff0000; ">    print += speakChinese;<br /></span><span id="hkegxwv" class="Apple-style-span" style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; line-height: normal; color: #ff0000; ">    print("Hello, 中国Q?);</span><span id="yqdbsrq" class="Apple-style-span" style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; line-height: normal; color: #ff0000; "><br /></span><span id="rjhfsrq" class="Apple-style-span" style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; line-height: normal; color: #000000; ">q样的话控制C׃(x)出现两边Hello,中国字符?br />解释Q?Q很明显Q多播委托不注册多方法,其方法签名一致的要求是不可以更改的!<br />        2Q注册的时候首先声名委托的实例Q然后可以通过“+=”q算W添加(注册Q更多的Ҏ(gu)Q同理可知,也可以通过q算W?#8220;-=”取消注册Q?br />        3Q注册完毕后Q一旦如同一般委托通过委托实例传入参数则所有注册过的方法都?x)接收参数运行一遍!q且是没有执行顺序的Q?br /></span><span id="jbzxknq" class="Apple-style-span" style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; line-height: normal; color: #ff0000; ">通过3Q可以解释ؓ(f)什么返回值必LvoidQ甚臌回值是同一个类型都不可以!</span><span id="cfdbdcq" class="Apple-style-span" style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; line-height: normal; color: #000000; ">因ؓ(f)多播委托中注册的Ҏ(gu)是一赯用的Q如果有q回|比如一个返?Q一个返?Q那么就?x)出C个函敎ͼ委托Q返回多个值的情况QM(x)出错Q所以必Mؓ(f)Void.<br /></span><span id="wsvgiwz" class="Apple-style-span" style="color: #ff0000; "></span><span id="nqdqdcq" class="Apple-style-span" style="color: #ff0000; "><font class="Apple-style-span" face="Verdana, Geneva, Arial, Helvetica, sans-serif"><span id="zypnewo" class="Apple-style-span" style="line-height: normal;"><br /></span><span id="qenacut" class="Apple-style-span" style="line-height: normal; color: #000000; ">到这里,我想具体什么是委托Q怎么使用委托基本上比较清楚了(jin)Q下面我最最兛_(j)的就是到底委托会(x)被用在哪些地方呢Q委托是C#中比较独特的一个技术,存在x真理Q它的优点在什么地方?Q很不幸Q我C++没学好,关于C++函数指针的有点也没参透,所以不能迁U过来)(j)</span><span id="hvxkxlo" class="Apple-style-span" style="line-height: normal;"><br /></span></font><br /></span>####################################<span style="color: red; ">委托的能?/span>######################################<font class="Apple-style-span" color="#FF0000"><br /></font>大家在用集合时Q一定用过SortcM的方法,q个Ҏ(gu)是用来寚w合中的元素进行排序的Q对于一般元素,比如int{等Q它内部嵌有比较方法在里面Q然而,很多时候我们需要比较的往往不是q么单的东西Q很多时候我们要比较的是我们自己定义的类型。而SortҎ(gu)中也有一个构造函敎ͼ是需要我们自׃入比较函数的Q这里就是一个用委托的l佳范例。下面引用的例子来自《C#高~程Q第6版)(j)》(有兴的话可以去看看Q书不错Q就是厚?jin)点Q?br />E序1Q?br /><div style="background-color: #eeeeee; font-size: 13px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #cccccc; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; "> 1</span> <span style="color: #0000ff; ">using</span><span style="color: #000000; "> System;<br /></span><span style="color: #008080; "> 2</span> <span style="color: #000000; "></span><span style="color: #0000ff; ">using</span><span style="color: #000000; "> System.Collections.Generic;<br /></span><span style="color: #008080; "> 3</span> <span style="color: #000000; "></span><span style="color: #0000ff; ">using</span><span style="color: #000000; "> System.Text;<br /></span><span style="color: #008080; "> 4</span> <span style="color: #000000; "><br /></span><span style="color: #008080; "> 5</span> <span style="color: #000000; "></span><span style="color: #0000ff; ">namespace</span><span style="color: #000000; "> Wrox.ProCSharp.Delegates<br /></span><span style="color: #008080; "> 6</span> <span style="color: #000000; ">{<br /></span><span style="color: #008080; "> 7</span> <span style="color: #000000; ">   </span><span style="color: #0000ff; ">class</span><span style="color: #000000; "> Employee<br /></span><span style="color: #008080; "> 8</span> <span style="color: #000000; ">   {<br /></span><span style="color: #008080; "> 9</span> <span style="color: #000000; ">      </span><span style="color: #0000ff; ">private</span><span style="color: #000000; "> </span><span style="color: #0000ff; ">string</span><span style="color: #000000; "> name;<br /></span><span style="color: #008080; ">10</span> <span style="color: #000000; ">      </span><span style="color: #0000ff; ">private</span><span style="color: #000000; "> </span><span style="color: #0000ff; ">decimal</span><span style="color: #000000; "> salary;<br /></span><span style="color: #008080; ">11</span> <span style="color: #000000; "><br /></span><span style="color: #008080; ">12</span> <span style="color: #000000; ">      </span><span style="color: #0000ff; ">public</span><span style="color: #000000; "> Employee(</span><span style="color: #0000ff; ">string</span><span style="color: #000000; "> name, </span><span style="color: #0000ff; ">decimal</span><span style="color: #000000; "> salary)<br /></span><span style="color: #008080; ">13</span> <span style="color: #000000; ">      {<br /></span><span style="color: #008080; ">14</span> <span style="color: #000000; ">         </span><span style="color: #0000ff; ">this</span><span style="color: #000000; ">.name </span><span style="color: #000000; ">=</span><span style="color: #000000; "> name;<br /></span><span style="color: #008080; ">15</span> <span style="color: #000000; ">         </span><span style="color: #0000ff; ">this</span><span style="color: #000000; ">.salary </span><span style="color: #000000; ">=</span><span style="color: #000000; "> salary;<br /></span><span style="color: #008080; ">16</span> <span style="color: #000000; ">      }<br /></span><span style="color: #008080; ">17</span> <span style="color: #000000; "><br /></span><span style="color: #008080; ">18</span> <span style="color: #000000; ">      </span><span style="color: #0000ff; ">public</span><span style="color: #000000; "> </span><span style="color: #0000ff; ">override</span><span style="color: #000000; "> </span><span style="color: #0000ff; ">string</span><span style="color: #000000; "> ToString()<br /></span><span style="color: #008080; ">19</span> <span style="color: #000000; ">      {<br /></span><span style="color: #008080; ">20</span> <span style="color: #000000; ">         </span><span style="color: #0000ff; ">return</span><span style="color: #000000; "> </span><span style="color: #0000ff; ">string</span><span style="color: #000000; ">.Format(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">{0}, {1:C}</span><span style="color: #000000; ">"</span><span style="color: #000000; ">, name, salary);<br /></span><span style="color: #008080; ">21</span> <span style="color: #000000; ">      }<br /></span><span style="color: #008080; ">22</span> <span style="color: #000000; "><br /></span><span style="color: #008080; ">23</span> <span style="color: #000000; ">      </span><span style="color: #0000ff; ">public</span><span style="color: #000000; "> </span><span style="color: #0000ff; ">static</span><span style="color: #000000; "> </span><span style="color: #0000ff; ">bool</span><span style="color: #000000; "> CompareSalary(</span><span style="color: #0000ff; ">object</span><span style="color: #000000; "> x, </span><span style="color: #0000ff; ">object</span><span style="color: #000000; "> y)<br /></span><span style="color: #008080; ">24</span> <span style="color: #000000; ">      {<br /></span><span style="color: #008080; ">25</span> <span style="color: #000000; ">         Employee e1 </span><span style="color: #000000; ">=</span><span style="color: #000000; "> (Employee)x;<br /></span><span style="color: #008080; ">26</span> <span style="color: #000000; ">         Employee e2 </span><span style="color: #000000; ">=</span><span style="color: #000000; "> (Employee)y;<br /></span><span style="color: #008080; ">27</span> <span style="color: #000000; ">         </span><span style="color: #0000ff; ">return</span><span style="color: #000000; "> (e1.salary </span><span style="color: #000000; "><</span><span style="color: #000000; "> e2.salary);<br /></span><span style="color: #008080; ">28</span> <span style="color: #000000; ">      }<br /></span><span style="color: #008080; ">29</span>    }<font class="Apple-style-span" color="#008080"><br /></font><span style="color: #008080; ">30</span> }<font class="Apple-style-span" color="#008080"><br /></font><span style="color: #000000; "></span></div>q个Employeec里面定义了(jin)一个比较方法,CompareSalaryQ这个方法就是等?x)儿需要注册委托的Ҏ(gu)<br /><span id="nfdfhgf" class="Apple-style-span" style="color: #ff0000; "><br /></span>E序2Q?br /><div style="background-color: #eeeeee; font-size: 13px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #cccccc; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; "> 1</span> <span style="color: #0000ff; ">using</span><span style="color: #000000; "> System;<br /></span><span style="color: #008080; "> 2</span> <span style="color: #000000; "></span><span style="color: #0000ff; ">using</span><span style="color: #000000; "> System.Collections.Generic;<br /></span><span style="color: #008080; "> 3</span> <span style="color: #000000; "></span><span style="color: #0000ff; ">using</span><span style="color: #000000; "> System.Text;<br /></span><span style="color: #008080; "> 4</span> <span style="color: #000000; "><br /></span><span style="color: #008080; "> 5</span> <span style="color: #000000; "></span><span style="color: #0000ff; ">namespace</span><span style="color: #000000; "> Wrox.ProCSharp.Delegates<br /></span><span style="color: #008080; "> 6</span> <span style="color: #000000; ">{<br /></span><span style="color: #008080; "> 7</span> <span style="color: #000000; ">   </span><span style="color: #0000ff; ">delegate</span><span style="color: #000000; "> </span><span style="color: #0000ff; ">bool</span><span style="color: #000000; "> Comparison(</span><span style="color: #0000ff; ">object</span><span style="color: #000000; "> x, </span><span style="color: #0000ff; ">object</span><span style="color: #000000; "> y);<br /></span><span style="color: #008080; "> 8</span> <span style="color: #000000; "><br /></span><span style="color: #008080; "> 9</span> <span style="color: #000000; ">   </span><span style="color: #0000ff; ">class</span><span style="color: #000000; "> BubbleSorter<br /></span><span style="color: #008080; ">10</span> <span style="color: #000000; ">   {<br /></span><span style="color: #008080; ">11</span> <span style="color: #000000; ">      </span><span style="color: #0000ff; ">static</span><span style="color: #000000; "> </span><span style="color: #0000ff; ">public</span><span style="color: #000000; "> </span><span style="color: #0000ff; ">void</span><span style="color: #000000; "> Sort(</span><span style="color: #0000ff; ">object</span><span style="color: #000000; ">[] sortArray, Comparison comparer)<br /></span><span style="color: #008080; ">12</span> <span style="color: #000000; ">      {<br /></span><span style="color: #008080; ">13</span> <span style="color: #000000; ">         </span><span style="color: #0000ff; ">for</span><span style="color: #000000; "> (</span><span style="color: #0000ff; ">int</span><span style="color: #000000; "> i </span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #000000; ">0</span><span style="color: #000000; ">; i </span><span style="color: #000000; "><</span><span style="color: #000000; "> sortArray.Length; i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">)<br /></span><span style="color: #008080; ">14</span> <span style="color: #000000; ">         {<br /></span><span style="color: #008080; ">15</span> <span style="color: #000000; ">            </span><span style="color: #0000ff; ">for</span><span style="color: #000000; "> (</span><span style="color: #0000ff; ">int</span><span style="color: #000000; "> j </span><span style="color: #000000; ">=</span><span style="color: #000000; "> i </span><span style="color: #000000; ">+</span><span style="color: #000000; "> </span><span style="color: #000000; ">1</span><span style="color: #000000; ">; j </span><span style="color: #000000; "><</span><span style="color: #000000; "> sortArray.Length; j</span><span style="color: #000000; ">++</span><span style="color: #000000; ">)<br /></span><span style="color: #008080; ">16</span> <span style="color: #000000; ">            {<br /></span><span style="color: #008080; ">17</span> <span style="color: #000000; ">               </span><span style="color: #0000ff; ">if</span><span style="color: #000000; "> (comparer(sortArray[j], sortArray[i]))<br /></span><span style="color: #008080; ">18</span> <span style="color: #000000; ">               {<br /></span><span style="color: #008080; ">19</span> <span style="color: #000000; ">                  </span><span style="color: #0000ff; ">object</span><span style="color: #000000; "> temp </span><span style="color: #000000; ">=</span><span style="color: #000000; "> sortArray[i];<br /></span><span style="color: #008080; ">20</span> <span style="color: #000000; ">                  sortArray[i] </span><span style="color: #000000; ">=</span><span style="color: #000000; "> sortArray[j];<br /></span><span style="color: #008080; ">21</span> <span style="color: #000000; ">                  sortArray[j] </span><span style="color: #000000; ">=</span><span style="color: #000000; "> temp;<br /></span><span style="color: #008080; ">22</span> <span style="color: #000000; ">               }<br /></span><span style="color: #008080; ">23</span> <span style="color: #000000; ">            }<br /></span><span style="color: #008080; ">24</span> <span style="color: #000000; ">         }<br /></span><span style="color: #008080; ">25</span> <span style="color: #000000; ">      }<br /></span><span style="color: #008080; ">26</span> <span style="color: #000000; ">   }<br /></span><span style="color: #008080; ">27</span> }<font class="Apple-style-span" color="#008080"><br /></font><span style="color: #000000; "></span></div><span id="dvecazj" class="Apple-style-span" style="color: #000000; ">q个c里面声明了(jin)一个委托,可以看到q个委托和上面Employeec里面的Ҏ(gu){֐是一L(fng)Q也是说可以通过q个代理注册上面的CompareSalaryҎ(gu)<br /><br /></span>E序3Q?br /><div style="background-color: #eeeeee; font-size: 13px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #cccccc; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; "> 1</span> <span style="color: #0000ff; ">using</span><span style="color: #000000; "> System;<br /></span><span style="color: #008080; "> 2</span> <span style="color: #000000; "></span><span style="color: #0000ff; ">using</span><span style="color: #000000; "> System.Collections.Generic;<br /></span><span style="color: #008080; "> 3</span> <span style="color: #000000; "></span><span style="color: #0000ff; ">using</span><span style="color: #000000; "> System.Text;<br /></span><span style="color: #008080; "> 4</span> <span style="color: #000000; "><br /></span><span style="color: #008080; "> 5</span> <span style="color: #000000; "></span><span style="color: #0000ff; ">namespace</span><span style="color: #000000; "> Wrox.ProCSharp.Delegates<br /></span><span style="color: #008080; "> 6</span> <span style="color: #000000; ">{<br /></span><span style="color: #008080; "> 7</span> <span style="color: #000000; "><br /></span><span style="color: #008080; "> 8</span> <span style="color: #000000; ">   </span><span style="color: #0000ff; ">class</span><span style="color: #000000; "> Program<br /></span><span style="color: #008080; "> 9</span> <span style="color: #000000; ">   {<br /></span><span style="color: #008080; ">10</span> <span style="color: #000000; ">      </span><span style="color: #0000ff; ">static</span><span style="color: #000000; "> </span><span style="color: #0000ff; ">void</span><span style="color: #000000; "> Main()<br /></span><span style="color: #008080; ">11</span> <span style="color: #000000; ">      {<br /></span><span style="color: #008080; ">12</span> <span style="color: #000000; ">         Employee[] employees </span><span style="color: #000000; ">=</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">13</span> <span style="color: #000000; ">         {<br /></span><span style="color: #008080; ">14</span> <span style="color: #000000; ">           </span><span style="color: #0000ff; ">new</span><span style="color: #000000; "> Employee(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">Bugs Bunny</span><span style="color: #000000; ">"</span><span style="color: #000000; ">, </span><span style="color: #000000; ">20000</span><span style="color: #000000; ">),<br /></span><span style="color: #008080; ">15</span> <span style="color: #000000; ">           </span><span style="color: #0000ff; ">new</span><span style="color: #000000; "> Employee(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">Elmer Fudd</span><span style="color: #000000; ">"</span><span style="color: #000000; ">, </span><span style="color: #000000; ">10000</span><span style="color: #000000; ">),<br /></span><span style="color: #008080; ">16</span> <span style="color: #000000; ">           </span><span style="color: #0000ff; ">new</span><span style="color: #000000; "> Employee(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">Daffy Duck</span><span style="color: #000000; ">"</span><span style="color: #000000; ">, </span><span style="color: #000000; ">25000</span><span style="color: #000000; ">),<br /></span><span style="color: #008080; ">17</span> <span style="color: #000000; ">           </span><span style="color: #0000ff; ">new</span><span style="color: #000000; "> Employee(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">Wiley Coyote</span><span style="color: #000000; ">"</span><span style="color: #000000; ">, (</span><span style="color: #0000ff; ">decimal</span><span style="color: #000000; ">)</span><span style="color: #000000; ">1000000.38</span><span style="color: #000000; ">),<br /></span><span style="color: #008080; ">18</span> <span style="color: #000000; ">           </span><span style="color: #0000ff; ">new</span><span style="color: #000000; "> Employee(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">Foghorn Leghorn</span><span style="color: #000000; ">"</span><span style="color: #000000; ">, </span><span style="color: #000000; ">23000</span><span style="color: #000000; ">),<br /></span><span style="color: #008080; ">19</span> <span style="color: #000000; ">           </span><span style="color: #0000ff; ">new</span><span style="color: #000000; "> Employee(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">RoadRunner'</span><span style="color: #000000; ">"</span><span style="color: #000000; ">, </span><span style="color: #000000; ">50000</span><span style="color: #000000; ">)};<br /></span><span style="color: #008080; ">20</span> <span style="color: #000000; "><br /></span><span style="color: #008080; ">21</span> <span style="color: #000000; ">         BubbleSorter.Sort(employees, Employee.CompareSalary);<br /></span><span style="color: #008080; ">22</span> <span style="color: #000000; "><br /></span><span style="color: #008080; ">23</span> <span style="color: #000000; ">         </span><span style="color: #0000ff; ">foreach</span><span style="color: #000000; "> (var employee </span><span style="color: #0000ff; ">in</span><span style="color: #000000; "> employees)<br /></span><span style="color: #008080; ">24</span> <span style="color: #000000; ">         {<br /></span><span style="color: #008080; ">25</span> <span style="color: #000000; ">            Console.WriteLine(employee);<br /></span><span style="color: #008080; ">26</span> <span style="color: #000000; ">         }<br /></span><span style="color: #008080; ">27</span> <span style="color: #000000; ">         </span><span style="color: #008000; ">//</span><span style="color: #008000; ">for (int i = 0; i < employees.Length; i++)<br /></span><span style="color: #008080; ">28</span> <span style="color: #008000; ">         </span><span style="color: #008000; ">//</span><span style="color: #008000; ">   Console.WriteLine(employees[i].ToString());</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">29</span> <span style="color: #008000; "></span><span style="color: #000000; ">      }<br /></span><span style="color: #008080; ">30</span> <span style="color: #000000; ">   }<br /></span><span style="color: #008080; ">31</span> }</div><span id="pobkmew" class="Apple-style-span" style="color: #ff0000; "></span><span id="ltcerfe" class="Apple-style-span" style="color: #ff0000; "></span><span id="efdbsru" class="Apple-style-span" style="color: #ff0000; "></span><span id="dpracfi" class="Apple-style-span" style="color: #ff0000; "></span><span id="xflnpoy" class="Apple-style-span" style="color: #ff0000; "></span><span id="klnwyxh" class="Apple-style-span" style="color: #ff0000; ">我们看一下这里是怎么使用委托的!<br /></span><span id="yktkmls" class="Apple-style-span" style="color: #ff0000; "></span><span id="xnlnlor" class="Apple-style-span" style="color: #000000; ">首先声明?jin)一个Employee数组Q目标是寚w面的元素心(j)排序Q我们看刎ͼ排序使用的方法是?rn)态的Sort()Ҏ(gu)Q传入了(jin)一个数l和一个方法名Q而在Sort()Ҏ(gu)的参数列表里面大家可以看刎ͼ与方法名对应的位|是委托的实例,也就是说Q我们把比较的方法通过委托传给?jin)比较函敎ͼq样Q我们就能够通过改变比较的方法来实现比较我们自己定义的类型的目的Q?/span><span id="xfwylvj" class="Apple-style-span" style="color: #ff0000; "><br /></span><font class="Apple-style-span" face="Verdana, Geneva, Arial, Helvetica, sans-serif"><span id="nzigewg" class="Apple-style-span" style="line-height: normal;">个h感觉q样的实现很方便Q尤其是比较函数分d来,q样W合E序?#8220;开闭原?#8221;Q将需要变化,可能变化的部分剥M(jin)出来~~</span></font><br /><br /><font class="Apple-style-span" color="#FF0000" face="Verdana, Geneva, Arial, Helvetica, sans-serif"><span id="qcprtaz" class="Apple-style-span" style="line-height: normal; color: #0000ff; ">当然Q委托的能力不是q样一个例子可以说清楚的,况且q里q没有列出多播委托的例子Q在H体事g中每个多播委托可以实C个事件激发多个监听者的功能Q所以说到底委托有什么好处,该怎么使用Q都需要多多实跉|能更多的领?zhn)~</span><span id="emoxkcm" class="Apple-style-span" style="line-height: normal;"><br /></span></font><br />接下来还有些东西值得侃一侃:(x)<br /><span style="color: #ff0000; font-size: 12pt; ">1.委托之匿名方法:(x)</span><br />委托不但可以为已l存在的Ҏ(gu)注册Q而且在编辑过E中可以直接d一个匿名方法,换句话说Q就是(f)时写一个方法放入注册列表中Q下面是一个示?延箋上面的案例:(x)<br />   <font class="Apple-style-span" color="#999999">Print print = delegate(string say){<br />        Console.WriteLine(say);<br />    }</font><br />q里注册׃是一个方法了(jin)Q而是一个代码块Q关键字是delegateQ这是不能更改的Q后面的传入参数以及(qing)里面Ҏ(gu)的返回|如果有返回值的情况Q必要和委托声明的一_(d)<br /><span style="color: #00ff00; ">q里我有一个疑问,q种匿名Ҏ(gu)的委托用是不是可以用在多播委托中?按常理应该是可以d的,那么怎么取消注册呢?Q没有方法名的情况下是不可能使用-=的嘛~Q?/span><br /><br /><font class="Apple-style-span" color="#FF0000"><font class="Apple-style-span" size="3">2.委托</font><div style="display: inline-block; font-size: medium; "><div><span id="tqvevym" class="Apple-style-span" style="font-family: arial; line-height: 18px; font-size: 16px; ">λ表达?/span></div></div></font><span id="coxoiwk" class="Apple-style-span" style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; line-height: normal; color: #ff0000; ">Q?/span><span id="ykizilz" class="Apple-style-span" style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; line-height: normal; "><br /></span><span id="frajloy" class="Apple-style-span" style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; line-height: normal; "><div><span id="jgigeoc" class="Apple-style-span" style="font-family: arial; font-size: 16px; line-height: 18px; ">λ<div style="display: inline-block; "><div><span id="yzbdfiw" class="Apple-style-span" style="color: #000000; font-family: verdana, 'courier new'; line-height: 21px; font-size: 14px; ">表达式是C#3.0新提供的语法Q用于委托类型以化代码,事实上,<div style="display: inline-block; "><div><span id="kwjsqtd" class="Apple-style-span" style="font-family: arial; line-height: 18px; font-size: 16px; ">λ<div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; display: inline-block; "><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span id="tmkxvnm" class="Apple-style-span" style="color: #000000; font-family: verdana, 'courier new'; line-height: 21px; font-size: 14px; ">表达?/span></div></div></span></div></div>是委托形式的一U符可辑Ş式,下面是一个示例:(x)<br /></span></div></div></span></div></span><div><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; display: inline-block; "><div style="font-size: medium; "><span style="font-family: arial; line-height: 18px; font-size: 16px; "><br /></span></div></div></div><span id="khuwjme" class="Apple-style-span" style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; line-height: normal; ">上面的匿名方法的例子是可以这么用表达式写的:(x)<br /><div><span style="font-family: verdana, 'courier new'; color: #999999; line-height: 21px; ">    Print print => (say) {<br />        Console.WriteLine(say);<br />    }</span></div></span><span id="sevxoyb" class="Apple-style-span" style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; line-height: normal; ">上面的表辑ּ很奇怪吧Qsayq个变量没有实现声明开始用了(jin)对吧Q解释如下:(x)<br />其实say是声明过的,在哪里声明的呢?对,没错Q就是第一ơ用的时候声明的Q但是很明显Q这里根本不像变量声明啊Q根本就没有指出cd嘛,q就是委托的独特之处Q在声明委托的时候就已经指出?jin)参数的cdQ在q里表达式是专门代替委托而存在的Q也q当于在这里指Z(jin)say的类型!<br /><br />下面再看一个例子就知道表达式和委托的关pM(jin)Q?br />委托声明Qpublic delegate bool  Predicate(int object);<br />看下面的使用Ҏ(gu)Q?br /><div>Predicate p1 = x => x>5;</div>list.findAll(<div style="display: inline-block; "><div>x => x>5</div></div>);<br />W二U用方式相当于Q?div style="display: inline-block; "><div>list.findAll(<div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; display: inline-block; "><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">delegate(int x){return x>5}</div></div>)</div></div>;<br /></span><span id="tfduhky" class="Apple-style-span" style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; line-height: normal; ">Ҏ(gu)上面两条语句Q是否有所感?zhn)Q?br /></span><span id="hegizcb" class="Apple-style-span" style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; line-height: normal; "><br /></span><span id="gdfoxlk" class="Apple-style-span" style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; line-height: normal; color: #ff0000; font-size: 12pt; ">3.委托之协变与抗变</span><span id="zsusuth" class="Apple-style-span" style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; line-height: normal; "><br /></span><span id="bjhfwgf" class="Apple-style-span" style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; line-height: normal; ">q个我想也不太常遇到Q其实就是委托的参数与返回值和父类与子cM间的一U{换,q里׃|哩|嗦?jin)~~<br /></span><span id="zpyljxa" class="Apple-style-span" style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; line-height: normal; "><br /><br />写写写写发现有点像是整理Q不q想说的也基本上说在q里?jin),Ƣ迎留下意见Q也Ƣ迎留下问题互相交流~<br /></span><span id="bnekxlo" class="Apple-style-span" style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; line-height: normal; "><br /></span><span id="yvikfth" class="Apple-style-span" style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; line-height: normal; "><br /></span><span id="owfwybe" class="Apple-style-span" style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; line-height: normal; "><br /></span><span id="vsqdfih" class="Apple-style-span" style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; line-height: normal; "><br /></span><img src ="http://www.tkk7.com/Inn-Gry/aggbug/357713.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/Inn-Gry/" target="_blank">灰色客栈</a> 2011-09-01 15:30 <a href="http://www.tkk7.com/Inn-Gry/archive/2011/09/01/357713.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Android目导入出现问题解决Ҏ(gu)http://www.tkk7.com/Inn-Gry/archive/2011/08/29/357520.html灰色客栈灰色客栈Mon, 29 Aug 2011 09:49:00 GMThttp://www.tkk7.com/Inn-Gry/archive/2011/08/29/357520.htmlhttp://www.tkk7.com/Inn-Gry/comments/357520.htmlhttp://www.tkk7.com/Inn-Gry/archive/2011/08/29/357520.html#Feedback0http://www.tkk7.com/Inn-Gry/comments/commentRss/357520.htmlhttp://www.tkk7.com/Inn-Gry/services/trackbacks/357520.html

很正常的工程现在q导入包都会(x)出错Q整个项目出现大面积的错误,很明显,肯定是工E找不到q个包?br />
现在看一下这目的树(wi):


再看一个很正常的项目的?wi)?x)

q样一Ҏ(gu)是不是发现问题了(jin)Q正常的Android目比不正常的项目多?jin)一?span style="color: red; ">Android2.2的包Q?br />
解决Ҏ(gu)Q?br />Android叛_  ->  Build Path -> Configure Build Path
在侧Ҏ(gu)里面选中Android

选中一个Project Build TargetQ?q个选择就是对应上面缺q文gQ选中后点d下角的Apply
q时候错误项目里面就?x)出现Androidx.xQ?目回复正常

可能出现的问题:(x)
点击Apply后错误项目没有反应,q时候其中一U可能就是:(x)目的属性是只读的!Q我的电(sh)脑有一ơ中毒,所有文仉被改成了(jin)只读Q?br />解决Ҏ(gu)Q去workspace中选中文gQ右击,属性,只d掉,点击定Q然后到集成开发环境中叛_目Q刷斎ͼ再按照上面的操作步骤C遍应该就?x)OKQ?br />

再提一个联pM是很紧密的问题:(x)有时候R文g?x)莫名其妙的不见Q给大家提供两种手段Q可以试试~
1Q选中目Q在菜单栏里点击ProjectQ?然后点击Clean...Q?br />2Q选中目叛_Q点击Android ToolsQ?然后点击Fix Project PropertiesQ刷斎ͼ
记得Project里面的Build AutomaticallyN上Q?br />
R文g丢失的情况下千万不要做两件事Q?br />1Q自己新Z个R文gQ?br />2Q从别的目里面拯R文gQ就是你以前备份的同一个项目里面的R文g都不可以q么?br />R文g是项目自动生成的Q是每个目自己所独有的,不可?br />












灰色客栈 2011-08-29 17:49 发表评论
]]>
使用Hudson持箋集成Android目http://www.tkk7.com/Inn-Gry/archive/2011/08/01/355462.html灰色客栈灰色客栈Sun, 31 Jul 2011 16:01:00 GMThttp://www.tkk7.com/Inn-Gry/archive/2011/08/01/355462.htmlhttp://www.tkk7.com/Inn-Gry/comments/355462.htmlhttp://www.tkk7.com/Inn-Gry/archive/2011/08/01/355462.html#Feedback2http://www.tkk7.com/Inn-Gry/comments/commentRss/355462.htmlhttp://www.tkk7.com/Inn-Gry/services/trackbacks/355462.html阅读全文

灰色客栈 2011-08-01 00:01 发表评论
]]>
վ֩ģ壺 ձ˳Ļ| ۺһ| ۺŷ㻨| Ļav벻| պƵ| ˾ƷԻ79ren| ۺһ| jzzijzzij߹ۿ츾| þþƷƵѲ| AƵվ| aëƬƵѹۿ| Ʒþ8xѹۿ| ?VþþƷ| Ľղ2021| ɫƵѹۿ| ôͺˬƵ| Ʒ޾Ʒպ| ޾Ʒ| 91ѹۿ| ˿ۺ| ޾Ʒ| ձһƷƵ | ޾Ʒ99þþþĻ| ŷ޵һa߹ۿ| ԻƵ߿Ƭ | ߲ѲavƬ| AVպAV| ҳַȫѹۿ12վ| һ234޿Ƶ| ŷ޹Ʒ㽶| ˾޾ƷӰԺ߹ۿ| ɫվ| ޸Ʒһ| ŮڵƵվ| ˾Ƶ| ޹˳߹ۿ69վ| ɫƵ| ߹ۿĻɫַ| avר| vaƷѹۿ| þ99ڹ|