<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>技术英语</title><link>http://blog.vckbase.com/zhaotide/category/141.html</link><description>技术英语方面的随笔</description><managingEditor>小刀人</managingEditor><dc:language>zh-CHS</dc:language><generator>.Text Version 0.958.2004.214</generator><item><dc:creator>小刀人</dc:creator><title>在VB .NET 2005中的自定义事件</title><link>http://blog.vckbase.com/zhaotide/archive/2005/05/22/5681.html</link><pubDate>Sun, 22 May 2005 14:47:00 GMT</pubDate><guid>http://blog.vckbase.com/zhaotide/archive/2005/05/22/5681.html</guid><wfw:comment>http://blog.vckbase.com/zhaotide/comments/5681.html</wfw:comment><comments>http://blog.vckbase.com/zhaotide/archive/2005/05/22/5681.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blog.vckbase.com/zhaotide/comments/commentRss/5681.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/zhaotide/services/trackbacks/5681.html</trackback:ping><description>&lt;TABLE cellSpacing=0 cellPadding=5 border=0&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class=bodycopy&gt;&lt;B&gt;Bill Horst&lt;/B&gt; (&lt;A href="http://www.codeguru.com/member.php/238957/"&gt;view profile&lt;/A&gt;)&lt;BR&gt;March 30, 2005 &lt;BR&gt;翻译：小刀人&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P&gt;&lt;B&gt;Environment:&lt;/B&gt;&amp;nbsp; VB .NET 2005 &lt;BR&gt;&lt;BR&gt;本文提供了自定义事件的介绍，一个VB .NET 2005的新的语言特性。自定义事件允许在事件的AddHandler, RemoveHandler, 和RaiseEvent 被调用时由用户指定要做什么。&lt;BR&gt;Visual Basic 2005 有一些在以前的VB.NET版本中没有的新的特性。其中一个就是能创建自定义事件以使得程序员可以在AddHandler, RemoveHandler, 和RaiseEvent 被调用时指定要做什么。&lt;BR&gt;下面是一个使用自定义事件的VB代码以记录数据处理的变化。当然，这只是一个如何使用自定义事件的例子，该方法基本上可以被用于任何目的。&lt;BR&gt;&lt;/P&gt;
&lt;DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid"&gt;
&lt;DIV&gt;&lt;IMG id=Codehighlighter1_9_1338_Open_Image onclick="this.style.display='none'; Codehighlighter1_9_1338_Open_Text.style.display='none'; Codehighlighter1_9_1338_Closed_Image.style.display='inline'; Codehighlighter1_9_1338_Closed_Text.style.display='inline';" src="/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top&gt;&lt;IMG id=Codehighlighter1_9_1338_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_9_1338_Closed_Text.style.display='none'; Codehighlighter1_9_1338_Open_Image.style.display='inline'; Codehighlighter1_9_1338_Open_Text.style.display='inline';" src="/Images/OutliningIndicators/ContractedBlock.gif" align=top&gt;&lt;SPAN style="COLOR: #0000ff"&gt;Delegate&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_9_1338_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;Sub&amp;nbsp;MyDelegate()&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_9_1338_Open_Text&gt;&lt;SPAN style="COLOR: #0000ff"&gt;Sub&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;MyDelegate(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;ByVal&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;message&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;As&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;String&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;)&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&lt;BR&gt;&lt;IMG id=Codehighlighter1_50_951_Open_Image onclick="this.style.display='none'; Codehighlighter1_50_951_Open_Text.style.display='none'; Codehighlighter1_50_951_Closed_Image.style.display='inline'; Codehighlighter1_50_951_Closed_Text.style.display='inline';" src="/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top&gt;&lt;IMG id=Codehighlighter1_50_951_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_50_951_Closed_Text.style.display='none'; Codehighlighter1_50_951_Open_Image.style.display='inline'; Codehighlighter1_50_951_Open_Text.style.display='inline';" src="/Images/OutliningIndicators/ContractedSubBlock.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_50_951_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;Class&amp;nbsp;MyClass1&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_50_951_Open_Text&gt;&lt;SPAN style="COLOR: #0000ff"&gt;Class&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;MyClass1&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Custom&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;Event&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;MyEvent&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;As&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;MyDelegate&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;'&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&amp;nbsp;这段代码将AddHandler&amp;nbsp;MyEvent,&amp;nbsp;D1被调用时运行&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;AddHandler&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;ByVal&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;value&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;As&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;MyDelegate)&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;WriteLine&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;Adding&amp;nbsp;Handler&amp;nbsp;for&amp;nbsp;MyEvent&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;)&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MyEventHandler&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;value&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;End&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;AddHandler&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;'&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&amp;nbsp;这段代码将RemoveHandler&amp;nbsp;MyEvent,&amp;nbsp;D1被调用时运行&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;RemoveHandler&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;ByVal&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;value&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;As&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;MyDelegate)&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;WriteLine&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;Removing&amp;nbsp;Handler&amp;nbsp;for&amp;nbsp;MyEvent&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;)&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MyEventHandler&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;Nothing&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;End&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;RemoveHandler&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;'&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&amp;nbsp;这段代码将RaiseEvent&amp;nbsp;MyEvent(string)被调用时运行&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;RaiseEvent&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;ByVal&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;message&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;As&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;String&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;)&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;If&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;Not&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;MyEventHandler&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;Is&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;Nothing&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;Then&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MyEventHandler.Invoke(message)&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;Else&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;WriteLine&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;No&amp;nbsp;Handler&amp;nbsp;for&amp;nbsp;Raised&amp;nbsp;MyEvent&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;)&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;End&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;If&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;End&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;RaiseEvent&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;End&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;Event&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;Public&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;MyEventHandler&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;As&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;MyDelegate&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&lt;BR&gt;&lt;IMG id=Codehighlighter1_867_941_Open_Image onclick="this.style.display='none'; Codehighlighter1_867_941_Open_Text.style.display='none'; Codehighlighter1_867_941_Closed_Image.style.display='inline'; Codehighlighter1_867_941_Closed_Text.style.display='inline';" src="/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top&gt;&lt;IMG id=Codehighlighter1_867_941_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_867_941_Closed_Text.style.display='none'; Codehighlighter1_867_941_Open_Image.style.display='inline'; Codehighlighter1_867_941_Open_Text.style.display='inline';" src="/Images/OutliningIndicators/ContractedSubBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;Public&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_867_941_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;Sub&amp;nbsp;Raise_Event()&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_867_941_Open_Text&gt;&lt;SPAN style="COLOR: #0000ff"&gt;Sub&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;Raise_Event()&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;RaiseEvent&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;MyEvent(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;MyEvent&amp;nbsp;Was&amp;nbsp;Raised&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;)&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;End&amp;nbsp;Sub&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;End&amp;nbsp;Class&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&lt;BR&gt;&lt;IMG id=Codehighlighter1_954_1335_Open_Image onclick="this.style.display='none'; Codehighlighter1_954_1335_Open_Text.style.display='none'; Codehighlighter1_954_1335_Closed_Image.style.display='inline'; Codehighlighter1_954_1335_Closed_Text.style.display='inline';" src="/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top&gt;&lt;IMG id=Codehighlighter1_954_1335_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_954_1335_Closed_Text.style.display='none'; Codehighlighter1_954_1335_Open_Image.style.display='inline'; Codehighlighter1_954_1335_Open_Text.style.display='inline';" src="/Images/OutliningIndicators/ContractedSubBlock.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_954_1335_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;Module&amp;nbsp;DelegateModule&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_954_1335_Open_Text&gt;&lt;SPAN style="COLOR: #0000ff"&gt;Module&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;DelegateModule&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;Dim&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;Var1&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;As&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;MyClass1&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;Dim&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;D1&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;As&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;MyDelegate&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&lt;BR&gt;&lt;IMG id=Codehighlighter1_1028_1217_Open_Image onclick="this.style.display='none'; Codehighlighter1_1028_1217_Open_Text.style.display='none'; Codehighlighter1_1028_1217_Closed_Image.style.display='inline'; Codehighlighter1_1028_1217_Closed_Text.style.display='inline';" src="/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top&gt;&lt;IMG id=Codehighlighter1_1028_1217_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1028_1217_Closed_Text.style.display='none'; Codehighlighter1_1028_1217_Open_Image.style.display='inline'; Codehighlighter1_1028_1217_Open_Text.style.display='inline';" src="/Images/OutliningIndicators/ContractedSubBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_1028_1217_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;Sub&amp;nbsp;Main()&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_1028_1217_Open_Text&gt;&lt;SPAN style="COLOR: #0000ff"&gt;Sub&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;Main()&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Var1&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;New&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;MyClass1&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;D1&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;New&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;MyDelegate(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;AddressOf&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;MyHandler)&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;AddHandler&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;Var1.MyEvent,&amp;nbsp;D1&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Var1.Raise_Event()&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;RemoveHandler&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;Var1.MyEvent,&amp;nbsp;D1&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;End&amp;nbsp;Sub&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&lt;BR&gt;&lt;IMG id=Codehighlighter1_1223_1324_Open_Image onclick="this.style.display='none'; Codehighlighter1_1223_1324_Open_Text.style.display='none'; Codehighlighter1_1223_1324_Closed_Image.style.display='inline'; Codehighlighter1_1223_1324_Closed_Text.style.display='inline';" src="/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top&gt;&lt;IMG id=Codehighlighter1_1223_1324_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1223_1324_Closed_Text.style.display='none'; Codehighlighter1_1223_1324_Open_Image.style.display='inline'; Codehighlighter1_1223_1324_Open_Text.style.display='inline';" src="/Images/OutliningIndicators/ContractedSubBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_1223_1324_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;Sub&amp;nbsp;MyHandler()&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_1223_1324_Open_Text&gt;&lt;SPAN style="COLOR: #0000ff"&gt;Sub&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;MyHandler(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;ByVal&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;message&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;As&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;String&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;)&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;WriteLine&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;Event&amp;nbsp;Handled:&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;amp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;message)&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;End&amp;nbsp;Sub&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;End&amp;nbsp;Module&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;/SPAN&gt;&lt;BR&gt;原文链接：&lt;A href="http://www.codeguru.com/vb/gen/vb_general/idelanguage/article.php/c9481"&gt;http://www.codeguru.com/vb/gen/vb_general/idelanguage/article.php/c9481&lt;/A&gt;&lt;/P&gt;&lt;img src ="http://blog.vckbase.com/zhaotide/aggbug/5681.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>小刀人家</dc:creator><title>与C++相关的一些术语的翻译和问题 （转）</title><link>http://blog.vckbase.com/zhaotide/archive/2005/02/16/3090.html</link><pubDate>Wed, 16 Feb 2005 13:58:00 GMT</pubDate><guid>http://blog.vckbase.com/zhaotide/archive/2005/02/16/3090.html</guid><wfw:comment>http://blog.vckbase.com/zhaotide/comments/3090.html</wfw:comment><comments>http://blog.vckbase.com/zhaotide/archive/2005/02/16/3090.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://blog.vckbase.com/zhaotide/comments/commentRss/3090.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/zhaotide/services/trackbacks/3090.html</trackback:ping><description>&lt;CENTER&gt;
&lt;HR&gt;
&lt;/CENTER&gt;
&lt;P&gt;这里讨论一些词汇的译法。在选择术语之前我都仔细想过，尽可能采用常见译法，只有在确实存在有说服力的理由时，我才决定不采用某个流行译法。也有些术语是新问题。下面是一些情况，写在这里请各位评价（起因是在china-pub书评中与读者的讨论，这里经过重新整理，增加了许多材料，以后还会不断增加新内容）： 
&lt;HR&gt;

&lt;P&gt;关于&amp;#8220;侵入式&amp;#8221;（intrusive）和&amp;#8220;非侵入式&amp;#8221;设计 
&lt;P&gt;将intrusive翻译为&amp;#8220;侵入式&amp;#8221;是我的个人选择。但&amp;#8220;侵入式&amp;#8221;和&amp;#8220;非侵入式&amp;#8221;设计却是软件设计中的一般性问题。这里就此给一个简单解释。 
&lt;P&gt;在设计一个类时，按理说，需要考虑的应该只是该类所企图表示的那个&amp;#8220;概念&amp;#8221;本身：为表示有关概念应记录哪些信息，该类的对象与外界交换信息的界面等等。但定义这个类并不是为了放着观赏，而是为了使用。在考虑类对象的使用时，使用环境和用法的一些要素就可能&amp;#8220;侵入&amp;#8221;这个类的设计之中。实际上，许多情况下我们常常可以在&amp;#8220;侵入式&amp;#8221;设计和&amp;#8220;非侵入式&amp;#8221;设计之间做一个选择，不同选择各有优缺点。在考虑非类的程序部分时，这种问题也同样存在。 
&lt;P&gt;例如，我们可能需要对类A的对象做引用计数，这里有两种基本可能性：将计数功能纳入类A的设计内（侵入式引用计数设计，此时类A的对象中包含了与引用计数有关的要素，这显然是与类A所要表示的概念无关的东西），或者将计数功能放在类A之外（非侵入式引用计数）。 本书中讨论容器时提出了&amp;#8220;侵入式容器&amp;#8221;设计和&amp;#8220;非侵入式容器&amp;#8221;设计的概念：当我们希望将某个类A的对象放入一种容器时，是否需要将该容器的实现要素&amp;#8220;侵入&amp;#8221;这个类的设计实现之中（这显然是与类A本身的性质并无必然关系的要素）。不同考虑导致不同的容器设计。 
&lt;P&gt;其实在做程序时常常遇到这类问题，只不过国内计算机技术界还没有为此提供一对术语（当然，也可能某些圈子里早有&amp;#8220;美妙&amp;#8221;的术语，只是我孤陋寡闻）。在翻译《C++程序设计语言》中遇到intrusive一词时，我也考虑了许久，最后才选用了&amp;#8220;侵入式&amp;#8221;一词，其理由是：该词能很好地反映上述的不同设计考虑，它们也很像是技术术语。后来在另一些书籍文章里又看到intrusive一词，觉得&amp;#8220;侵入式&amp;#8221;和&amp;#8220;非侵入式&amp;#8221;这对词汇放在那里同样适用。看来英文的这种说法已经在一定范围中被接受。也就是说，将来在许多技术书籍和文章中都可能遇到这种说法。 
&lt;P&gt;我个人希望&amp;#8220;侵入式&amp;#8221;和&amp;#8220;非侵入式&amp;#8221;这一对中文术语能被广泛采纳（因为至今我还没有看到、想到更好的词汇）。当然，这只是个人的建议。 
&lt;HR&gt;

&lt;P&gt;1) 许多人将pablic/private说成是&amp;#8220;公有/私有&amp;#8221;，这两个词的意义与这里所需要的意义根本不符。public/private描述的是使用权：谁有权去访问/使用这些成分：是公众普遍可用，还是内部使用。因此我选择&amp;#8220;公用/私用&amp;#8221;这一对词。成员的所有权原本就非常清楚，完全不需要额外的描述。 
&lt;P&gt;在与网友&amp;#8220;虫虫&amp;#8221;的讨论中，他提出了一个很好的例证：假定类 B 将其成员 m 定义为 private，类 D 由类 B 派生。在类 D 的对象 d 中&lt;B&gt;有没有&lt;/B&gt;成员 m？回答当然是&amp;#8220;&lt;B&gt;有&lt;/B&gt;&amp;#8221;！但是 d 能使用其成员 m 吗？&amp;#8220;&lt;B&gt;不能&lt;/B&gt;&amp;#8221;！因为其基类 B 已经将成员 m 保留为&amp;#8220;自己用的了&amp;#8221;，这也就是&amp;#8220;&lt;B&gt;私用&lt;/B&gt;&amp;#8221;！由于基类将成员保留为私用，派生类的对象即使&amp;#8220;有&amp;#8221;此成员但却不能用。这又是&amp;#8220;有没有&amp;#8221;和&amp;#8220;可不可以使用&amp;#8221;确实不一样的一个明显实例。 
&lt;P&gt;2) friend。不少人用&amp;#8220;友员&amp;#8221;，我觉得很荒谬。如果讲中文，&amp;#8220;友&amp;#8221;绝不会是&amp;#8220;员&amp;#8221;。我们可以有&amp;#8220;成员&amp;#8221;、&amp;#8220;组员&amp;#8221;、&amp;#8220;队员&amp;#8221;等。&amp;#8220;友&amp;#8221;是另一种关系，绝无从属的意思。因此，friend class我宁可直接用&amp;#8220;友类&amp;#8221;。但friend function&amp;#8220;友函数&amp;#8221;读起来别扭，况且还需要有一个词表述一般性的friend和friend关系。因此我选择&amp;#8220;友元&amp;#8221;，因为&amp;#8220;元&amp;#8221;并无从属的意思，也常常作为一种构词时的补充。 
&lt;P&gt;3) constructor。常见的是&amp;#8220;构造函数&amp;#8221;。多年来我一直觉得这个词别扭，主要原因有两个：首先是这个词有岐义，&amp;#8220;构造&amp;#8221;也常（非术语地）作为动词表示去做出什么东西，例如&amp;#8220;在我们构造函数时，...&amp;#8221;；其次是&amp;#8220;构造&amp;#8221;作为非术语的使用太多。&amp;#8220;建构函数&amp;#8221;也是我学来的，看到这个词后觉得很好，原因也是多方面的：它看起来更像个专业名词（这只是感觉）；它很好地描述了constructor的意义和作用；它与&amp;#8220;析构函数&amp;#8221;有着完美的对称。建议采用&amp;#8220;建构函数&amp;#8221;还有一个重要理由：在目前自然科学和社会科学的许多领域，construct及其衍生词汇，在作为学术用语时已经被广泛地翻译为&amp;#8220;建构&amp;#8221;，如&amp;#8220;建构主义&amp;#8221;等等。当然，&amp;#8220;构造函数&amp;#8221;一词也还是可以接受的。因此，我在《C++程序设计语言》一书的翻译中就改用了它。但是，从长远观点看，我仍然赞成采用&amp;#8220;建构函数&amp;#8221;。 
&lt;P&gt;而另一方面，&amp;#8220;析构函数&amp;#8221;似乎不如台湾人用的&amp;#8220;解构函数&amp;#8221;，但它还不错，可以接受。另一个理由与上面类似，&amp;#8220;解构&amp;#8221;一词也广泛出现在其他许多领域的学术文章和著作中。长远说，采用&amp;#8220;解构函数&amp;#8221;是更好的选择。 
&lt;P&gt;当然，简单说&amp;#8220;构造函数&amp;#8221;也是可以接受的术语。因此，在《C++程序设计语言》一书的翻译中我也统一采用了它。但从更大的语言范围看，将 construction 及其相关词汇翻译为&amp;#8220;建构&amp;#8221;，将 destruction 及其相关词汇翻译为&amp;#8220;解构&amp;#8221;，已经在其他许多学科领域中广泛采用，包括许多自然科学和社会科学领域。计算机科学技术不应该因为自己&amp;#8220;完全由于偶然而产生的差错&amp;#8221;就永远游离于更大的学术环境之外。从长远看，我们最好是接受&amp;#8220;建构函数&amp;#8221;和&amp;#8220;解构函数&amp;#8221;的术语。 
&lt;P&gt;4) inline。不少人用&amp;#8220;内联&amp;#8221;，我不喜欢这个造出来的新词。发明&amp;#8220;内联&amp;#8221;者想的是对程序实体的处理方式（加工方式，指将函数代码嵌入调用位置），而inline一词不仅关心这种处理方式，也强调运行方式和情况（指无需经过函数调用步骤而直接运行）。根据这些，我立刻想到的词汇就是&amp;#8220;在线&amp;#8221;，在各种技术领域常用的与此有关词汇如&amp;#8220;在线控制&amp;#8221;，&amp;#8220;在线处理&amp;#8221;，&amp;#8220;在线工作&amp;#8221;，&amp;#8220;在线运行&amp;#8221;，&amp;#8220;在线设备&amp;#8221;等。这些词的意思包括将设备装入加工线，在加工线上处理，在运行中直接做等等。inline function用的正是这个意思。因此我选择了&amp;#8220;在线&amp;#8221;。 
&lt;P&gt;许多年前看到C++的inline机制，当时的认识就是：这是宏与函数概念的结合，可以说它是&amp;#8220;类型安全的宏&amp;#8221;，或说是&amp;#8220;在调用处展开的函数&amp;#8221;。我脑子里的两个术语就是inline expanding和inline execution，没考虑应该用哪个中文词。 
&lt;P&gt;inline expanding指代码加工阶段将inline函数代码嵌入调用位置代码之中，当然这时还可以做某些优化，可以做一些部分求值（partial evaluation）工作。inline execution则指代码执行时无需创建活动记录（亦称frame），也无需执行函数的入口和出口序列，直接进入函数所生成的代码去执行。在意义上我们一定有共识，否则就不好谈了。 
&lt;P&gt;对inline function，目前最常见的译法是&amp;#8220;内联&amp;#8221;。这是个很怪的词，我觉得不符合中文习惯。&amp;#8220;联&amp;#8221;指独立实体之间建立关系，常见的词如&amp;#8220;联络&amp;#8221;，&amp;#8220;联系&amp;#8221;，&amp;#8220;联合国&amp;#8221;，&amp;#8220;互联网&amp;#8221;。过去知道有&amp;#8220;外联部&amp;#8221;，讲外联也是很合理的。而&amp;#8220;内联&amp;#8221;就荒唐了，从来只有&amp;#8220;连为一体&amp;#8221;而不能&amp;#8220;联为一体&amp;#8221;。&amp;#8220;联&amp;#8221;就是承认双方（或多方）的独立性。而inline 函数的代码则要与调用处的代码连为一体。因此，估计&amp;#8220;内联&amp;#8221;是&amp;#8220;内连&amp;#8221;之误，属于以讹传讹。从这个角度看，&amp;#8220;内联&amp;#8221;远不如&amp;#8220;内连&amp;#8221;或者&amp;#8220;内嵌&amp;#8221;。但是，&amp;#8220;内连&amp;#8221;和&amp;#8220;内嵌&amp;#8221;都难以表示代码执行时的动态情况。&amp;#8220;内嵌&amp;#8221;还有一个致命弱点，它很容易与（加工前的）静态函数嵌套相混淆。 
&lt;P&gt;因为inline函数牵涉到与程序有关的三个时间：源代码，加工后的目标代码，执行。贴切的词确实不容易选。正是在这种情况下，我选择了可称为&amp;#8220;直译&amp;#8221;的词。况且，&amp;#8220;在线&amp;#8221;也能表现代码嵌入（嵌入调用代码行之中，代码行是线性的序列），函数所生成代码的直接执行（在线执行，执行动作也是线性的序列）。当然，&amp;#8220;在线&amp;#8221;也是online的翻译。从直接的意思看，online是&amp;#8220;在线上&amp;#8221;，表达某种外物的在线。inline的直接意思是&amp;#8220;在线内&amp;#8221;，想说的是融为一体，我觉得这也可以称为一种在线。 
&lt;P&gt;5）garbage collection。Garbage Collection在中文专业文献中主要有三种译法。80年代起就被称为"废料收集"； 有些讨论数据结构等的计算机书藉中称为"无用单元收集"；近年一些计算机工作者常用"垃圾回收"。 
&lt;P&gt;从某种意义上说，这是我最熟悉的东西之一。GC问题源自lisp和其他函数式语言的实现。我80年代就做过GC算法，后来也一直关注这个问题，对这一领域的情况很熟。在我国最早接触这方面人们一直将其翻译为&amp;#8220;废料收集&amp;#8221;。后来由于面向对象的出现，GC又成为许多实践工作者关心的事情，又出现了将garbage翻译为&amp;#8220;垃圾&amp;#8221;的情况。 
&lt;P&gt;将garbage翻译为&amp;#8220;废料&amp;#8221;正是取日常语汇&amp;#8220;废品回收&amp;#8221;、&amp;#8220;废物利用&amp;#8221;之义，我觉得很好，恰如其分。翻译为&amp;#8220;垃圾&amp;#8221;强调的是废弃物，就没有上面这种意思了。我这样说，完全没有将&amp;#8220;废料收集&amp;#8221;誉为&amp;#8220;经典&amp;#8221;或者&amp;#8220;正统&amp;#8221;之意，我从来没想过要去做某种卫道士。我只是想告诉朋友们一些可能他们不了解的情况。&amp;#8220;废料收集&amp;#8221;已经在许多人那里使用了20年以上，我使用它完全是习惯，也觉得它不是垃圾。 
&lt;P&gt;6）smart pointer。我认为应该译为&amp;#8220;灵巧指针&amp;#8221;，这也是从其他技术领域学来的。我们看到过 smart tools（灵巧工具），smart bomb（灵巧炸弹）等等。常见的另一翻译方式是将其译为&amp;#8220;智能指针&amp;#8221;，实在令人无法接受。称一个指针&amp;#8220;灵巧&amp;#8221;也就足够了。对这样一种简单的类似指针的机制，只因为它们稍微多做了一点事情，就说它有&amp;#8220;智能&amp;#8221;。这能算是智能吗？实在是过分夸大其词，也是对智能的蔑视，对&amp;#8220;智能是什么&amp;#8221;的过分联想。 
&lt;P&gt;
&lt;HR width="100%"&gt;
&lt;BR&gt;计算机领域（也与C++有关）也有一些特别难翻译的词汇。包括： 
&lt;P&gt;bind：目前的主要译法有&amp;#8220;约束&amp;#8221;和&amp;#8220;绑定&amp;#8221;（还有译为&amp;#8220;联编&amp;#8221;，这个译法太局限，在许多地方根本无法使用）。这两个译法大约都是从80年代初开始使用。前者由北京大学吴允曾、马希文等先生倡导，后者好像出自科学院计算所。前者取意义，后者希望在意义和发音上都有所获。我个人不喜欢&amp;#8220;绑定&amp;#8221;，主要是觉得这个词不像技术词汇。&amp;#8220;约束&amp;#8221;在意义上很合适，但这个中文词使用得太多（无论是作为专业用语还是作为非专业用语），因此也有缺陷。 
&lt;P&gt;采用&amp;#8220;绑定&amp;#8221;的问题还在于英文文献中大量出现 bind 的派生词汇，如 bound、binding、unbinding、unbound 等等，按照原意可能应分别译为&amp;#8220;被绑（或&amp;#8216;受绑&amp;#8217;）&amp;#8221;、&amp;#8220;上绑&amp;#8221;&amp;#8220;松绑&amp;#8221;&amp;#8220;未绑&amp;#8221;等等。不知人们看后有什么感受，我立即想到的是&amp;#8220;绑匪&amp;#8221;，不觉得它们不像技术术语。采用约束，可以译为&amp;#8220;受约&amp;#8221;，&amp;#8220;建约&amp;#8221;，&amp;#8220;解约&amp;#8221;等等。 
&lt;P&gt;override：目前一般译为&amp;#8220;覆盖&amp;#8221;。这一译法也不很太合适，但目前尚未看到更好的译法。另一种可见译法是&amp;#8220;改写&amp;#8221;，这一译法的缺陷更明显。override 指某一定义、描述在一个局部范围中取代了原先已经有的更全局的定义。如果我们说局部定义&amp;#8220;改写&amp;#8221;了全局定义，那么到底改了没有？当然，实际上，局部定义根本不会改写全局定义。它只是引进了一个新定义，这个新定义在该局部中有效，遮蔽了全局定义。在这个局部定义的作用范围之外，原有全局定义仍然有效，根本就没有被改变过。 &lt;BR&gt;&amp;nbsp; &lt;BR&gt;
&lt;P&gt;
&lt;CENTER&gt;
&lt;P&gt;
&lt;HR&gt;
&lt;/CENTER&gt;
&lt;P&gt;技术词汇的选择还是可以讨论的。由于这个领域并不太老，所用词汇也还没有收敛，&amp;#8220;标准术语&amp;#8221;最好是某个能恰如其分地描述有关情况的中文词，能够很好地反映原术语的意义，而又比较符合中文构词习惯。上面只是我的一些认识，它们说服了我。当然，如果存在更好的理由，我也可以改变这些看法。&amp;#8220;用的人多&amp;#8221;并不一定是&amp;#8220;更好的理由&amp;#8221;，当然它是最值得重视的理由之一。也正因为此，我在绝大部分情况下都采用了一般人的用法。 
&lt;CENTER&gt;
&lt;P&gt;
&lt;HR&gt;
&lt;/CENTER&gt;
&lt;CENTER&gt;
&lt;TABLE width="100%" border=0&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="54%"&gt;本页由裘宗燕建立和维护，保留所有权利。 &lt;BR&gt;原文链接：&lt;A href="http://www.is.pku.edu.cn/~qzy/books/cppl/words.htm"&gt;http://www.is.pku.edu.cn/~qzy/books/cppl/words.htm&lt;/A&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/CENTER&gt;&lt;img src ="http://blog.vckbase.com/zhaotide/aggbug/3090.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>小刀人家</dc:creator><title>以C的精神</title><link>http://blog.vckbase.com/zhaotide/archive/2004/11/27/1786.html</link><pubDate>Sat, 27 Nov 2004 01:09:00 GMT</pubDate><guid>http://blog.vckbase.com/zhaotide/archive/2004/11/27/1786.html</guid><wfw:comment>http://blog.vckbase.com/zhaotide/comments/1786.html</wfw:comment><comments>http://blog.vckbase.com/zhaotide/archive/2004/11/27/1786.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://blog.vckbase.com/zhaotide/comments/commentRss/1786.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/zhaotide/services/trackbacks/1786.html</trackback:ping><description>富有经验的开发者Greg Colvin以更好的未来为视角回溯了C, C++ 和Java的发展历程。
&lt;img src ="http://blog.vckbase.com/zhaotide/aggbug/1786.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>小刀人家</dc:creator><title>技术英语（1）</title><link>http://blog.vckbase.com/zhaotide/archive/2004/10/12/980.html</link><pubDate>Tue, 12 Oct 2004 02:03:00 GMT</pubDate><guid>http://blog.vckbase.com/zhaotide/archive/2004/10/12/980.html</guid><wfw:comment>http://blog.vckbase.com/zhaotide/comments/980.html</wfw:comment><comments>http://blog.vckbase.com/zhaotide/archive/2004/10/12/980.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://blog.vckbase.com/zhaotide/comments/commentRss/980.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/zhaotide/services/trackbacks/980.html</trackback:ping><description>技术英语论坛8月17日开通以来，受到广大网友的热情关注。在广大网友的积极参与下，论坛的热烈而又良好的学习气氛感染了我们每一个到技术英语论坛的朋友。现将论坛8月17日到9月25日的精华帖子和较好的译文编撰成文，供大家学习时参考。
&lt;img src ="http://blog.vckbase.com/zhaotide/aggbug/980.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>小刀人家</dc:creator><title>C＋＋ for ever！</title><link>http://blog.vckbase.com/zhaotide/archive/2004/09/03/775.html</link><pubDate>Fri, 03 Sep 2004 03:12:00 GMT</pubDate><guid>http://blog.vckbase.com/zhaotide/archive/2004/09/03/775.html</guid><description>&lt;FONT size=2&gt;&lt;SPAN class=code&gt;Despite the advent of new programming languages and technologies, C++ is the workhorse for many developers, and is likely to remain so for a long time to come. The main reasons for C++'s prominence are its flexibility, portability, efficiency, and performance.&lt;/SPAN&gt; &lt;BR&gt;&lt;/FONT&gt;&lt;SPAN class=code&gt;
&lt;FORM action=givepoint2.asp method=post&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;A href="http://www.vckbase.com/bbs/viewtopic2.asp?rid=1171658&amp;pg=4&amp;sf=59"&gt;http://www.vckbase.com/bbs/viewtopic2.asp?rid=1171658&amp;pg=4&amp;sf=59&lt;/A&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;-----------------------------------------------------------------------&lt;BR&gt;VC知识库新推出的技术英语论坛给我们提供了一个学习技术英语的好地方。上面的帖子是将一段关于C＋＋的评论的英文译为中文，虽然跟贴不是很多但是也足以看出大家对英文的重视，还有对C＋＋的热爱。&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;这里有一个词：workhorse 放在这里的语境里就不是吃苦耐劳者、广为应用的设备的意思，如果这么译谁也不会懂的，呵呵。&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;?&lt;/P&gt;&lt;/FORM&gt;&lt;/SPAN&gt;&lt;img src ="http://blog.vckbase.com/zhaotide/aggbug/775.html" width = "1" height = "1" /&gt;</description></item></channel></rss>