100165820.htm

来自「C#高级编程(第三版),顶死你们。。 。up」· HTM 代码 · 共 458 行 · 第 1/5 页

HTM
458
字号
<p class="a1" style="MARGIN-BOTTOM: 8.15pt; TEXT-INDENT: 21.45pt"><span style="FONT-FAMILY: 楷体_GB2312">&ldquo;兼容&rdquo;是指对象是该类型,或者派生于该类型。</span></p>
<p class="2" style="MARGIN: 8.15pt 0cm 0pt 21.45pt; TEXT-INDENT: 18.45pt"><span lang="EN-US">int i = 10;</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; TEXT-INDENT: 18.45pt"><span lang="EN-US">if (i is object)</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; TEXT-INDENT: 18.45pt"><span lang="EN-US">{</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; TEXT-INDENT: 18.45pt"><span lang="EN-US">&nbsp;&nbsp; Console.WriteLine(&quot;i is an object&quot;);</span></p>
<p class="2" style="MARGIN: 0cm 0cm 8.15pt 21.45pt; TEXT-INDENT: 18.45pt"><span lang="EN-US">}</span></p>
<p class="MsoNormal"><span lang="EN-US" style="LETTER-SPACING: -0.1pt">int</span><span style="FONT-FAMILY: 宋体; LETTER-SPACING: -0.1pt">和从</span><span lang="EN-US" style="LETTER-SPACING: -0.1pt">object</span><span style="FONT-FAMILY: 宋体; LETTER-SPACING: -0.1pt">继承而来的其他</span><span lang="EN-US" style="LETTER-SPACING: -0.1pt">C#</span><span style="FONT-FAMILY: 宋体; LETTER-SPACING: -0.1pt">数据类型一样,表达式</span><span lang="EN-US" style="LETTER-SPACING: -0.1pt">i is object</span><span style="FONT-FAMILY: 宋体; LETTER-SPACING: -0.1pt">将得到</span><span lang="EN-US" style="LETTER-SPACING: -0.1pt">true</span><span style="FONT-FAMILY: 宋体; LETTER-SPACING: -0.1pt">,并显示信息。</span></p>
<h3 style="MARGIN: 8.15pt 0cm"><span lang="EN-GB">5.1.5&nbsp; a</span><span lang="EN-GB">s</span><span style="FONT-FAMILY: 黑体">运算符</span></h3>
<p class="MsoNormal"><span lang="EN-US">as</span><span style="FONT-FAMILY: 宋体">运算符用于执行引用类型的显式类型转换。如果要转换的类型与指定的类型兼容,转换就会成功进行;如果类型不兼容,</span><span lang="EN-US">as</span><span style="FONT-FAMILY: 宋体">运算符就会返回值</span><span lang="EN-US">null</span><span style="FONT-FAMILY: 宋体">。如下面的代码所示,如果</span><span lang="EN-US">object</span><span style="FONT-FAMILY: 宋体">引用不指向</span><span lang="EN-US">string</span><span style="FONT-FAMILY: 宋体">实例,把</span><span lang="EN-US">object</span><span style="FONT-FAMILY: 宋体">引用转换为</span><span lang="EN-US">string</span><span style="FONT-FAMILY: 宋体">就会返回</span><span lang="EN-US">null</span><span style="FONT-FAMILY: 宋体">:</span></p>
<p class="2" style="MARGIN: 8.15pt 0cm 0pt 21.45pt; TEXT-INDENT: 18.45pt"><span lang="EN-US">object o1 = &quot;Some String&quot;;</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; TEXT-INDENT: 18.45pt"><span lang="EN-US">object o2 = 5;</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; TEXT-INDENT: 18.45pt"><span lang="EN-US">&nbsp;</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; TEXT-INDENT: 18.45pt"><span lang="EN-US">string s1 = o1 as string;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //s1 = &quot;Some String&quot;</span></p>
<p class="2" style="MARGIN: 0cm 0cm 8.15pt 21.45pt; TEXT-INDENT: 18.45pt"><span lang="EN-US">string s2 = o2 as string;&nbsp;&nbsp;&nbsp;&nbsp; //s1 = null</span></p>
<p class="MsoNormal"><span lang="EN-US">as</span><span style="FONT-FAMILY: 宋体">运算符允许在一步中进行安全的类型转换,不需要先使用</span><span lang="EN-US">is</span><span style="FONT-FAMILY: 宋体">运算符测试类型,再执行</span><span lang="EN-US">&nbsp;&nbsp; </span><span style="FONT-FAMILY: 宋体">转换。</span></p>
<h3 style="MARGIN: 8.15pt 0cm"><span></span><span lang="EN-GB">5.1.6</span><span lang="EN-GB"> &nbsp;sizeof</span><span style="FONT-FAMILY: 黑体">运算符</span></h3>
<p class="MsoNormal"><span><span style="FONT-FAMILY: 宋体">使用</span><span lang="EN-US">sizeof</span></span><span style="FONT-FAMILY: 宋体">运算符可以确定堆栈中值类型需要的长度</span><span lang="EN-US">(</span><span style="FONT-FAMILY: 宋体">单位是字节</span><span lang="EN-US">)</span><span style="FONT-FAMILY: 宋体">:</span></p>
<p class="2" style="MARGIN: 8.15pt 0cm 0pt 21.45pt; TEXT-INDENT: 18.45pt"><span lang="EN-US">string s = &quot;A string&quot;;</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; TEXT-INDENT: 18.45pt"><span lang="EN-US">unsafe</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; TEXT-INDENT: 18.45pt"><span lang="EN-US">{</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; TEXT-INDENT: 18.45pt"><span lang="EN-US">&nbsp;&nbsp; Console.WriteLine(sizeof(int));</span></p>
<p class="2" style="MARGIN: 0cm 0cm 8.15pt 21.45pt; TEXT-INDENT: 18.45pt"><span lang="EN-US">}</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">其结果是显示数字</span><span lang="EN-US">4</span><span style="FONT-FAMILY: 宋体">,因为</span><span lang="EN-US">int</span><span style="FONT-FAMILY: 宋体">有</span><span lang="EN-US">4</span><span style="FONT-FAMILY: 宋体">个字节。</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">注意,只能在不安全代码中使用</span><span lang="EN-US">sizeof</span><span style="FONT-FAMILY: 宋体">运算符。第</span><span lang="EN-US">7</span><span style="FONT-FAMILY: 宋体">章将详细论述不安全代码。</span></p>
<h3 style="MARGIN: 8.15pt 0cm"><span><span lang="EN-GB">5.1.7 &nbsp;typeof</span></span><span style="FONT-FAMILY: 黑体">运算符</span></h3>
<p class="MsoNormal"><span lang="EN-US">Typeof</span><span style="FONT-FAMILY: 宋体">运算符返回一个表示特定类型的</span><span lang="EN-US">Type</span><span style="FONT-FAMILY: 宋体">对象。例如,</span><span lang="EN-US">typeof(string)</span><span style="FONT-FAMILY: 宋体">返回表示</span><span lang="EN-US">System.String</span><span style="FONT-FAMILY: 宋体">类型的</span><span lang="EN-US">Type</span><span style="FONT-FAMILY: 宋体">对象。在使用反射动态查找对象的信息时,这个运算符是很有效的。第</span><span lang="EN-US">10</span><span style="FONT-FAMILY: 宋体">章将介绍反射。</span></p>
<h3 style="MARGIN: 8.15pt 0cm"><span><span lang="EN-GB">5.1.8 &nbsp;</span></span><span style="FONT-FAMILY: 黑体">运算符的优先级</span></h3>
<p class="MsoNormal"><span><span style="FONT-FAMILY: 宋体">表</span><span lang="EN-US">5-3</span></span><span style="FONT-FAMILY: 宋体">显示了</span><span lang="EN-US">C#</span><span style="FONT-FAMILY: 宋体">运算符的优先级。表顶部的运算符有最高的优先级</span><span lang="EN-GB">(</span><span style="FONT-FAMILY: 宋体">即在包含多个运算符的表达式中,最先计算该运算符</span><span lang="EN-GB">)</span><span style="FONT-FAMILY: 宋体">:</span></p>
<p class="a5" style="MARGIN-TOP: 8.15pt"><span style="FONT-FAMILY: 黑体">表</span><span lang="EN-US">&nbsp; 5-3</span></p>
<div align="center">
<table class="MsoNormalTable" style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium none; BORDER-BOTTOM: medium none; BORDER-COLLAPSE: collapse" cellspacing="0" cellpadding="0" border="1">
    <tbody>
        <tr>
            <td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 9.9pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 9.9pt; PADDING-BOTTOM: 1.4pt; BORDER-LEFT: medium none; WIDTH: 109.75pt; PADDING-TOP: 1.4pt; BORDER-BOTTOM: windowtext 1pt solid" valign="top" width="146">
            <p class="a2"><span style="FONT-FAMILY: 黑体">组</span></p>
            </td>
            <td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 9.9pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 9.9pt; PADDING-BOTTOM: 1.4pt; BORDER-LEFT: medium none; WIDTH: 325.8pt; PADDING-TOP: 1.4pt; BORDER-BOTTOM: windowtext 1pt solid" valign="top" width="434">
            <p class="a2"><span style="FONT-FAMILY: 黑体">运</span><span lang="EN-US">&nbsp; </span><span style="FONT-FAMILY: 黑体">算</span><span lang="EN-US">&nbsp; </span><span style="FONT-FAMILY: 黑体">符</span></p>
            </td>
        </tr>
        <tr>
            <td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 9.9pt; BORDER-TOP: medium none; PADDING-LEFT: 9.9pt; PADDING-BOTTOM: 1.4pt; BORDER-LEFT: medium none; WIDTH: 109.75pt; PADDING-TOP: 1.4pt; BORDER-BOTTOM: windowtext 1pt solid" valign="top" width="146">
            <p class="a4" style="MARGIN-LEFT: 10.7pt"><span style="FONT-FAMILY: 宋体">初级运算符</span></p>
            </td>
            <td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 9.9pt; BORDER-TOP: medium none; PADDING-LEFT: 9.9pt; PADDING-BOTTOM: 1.4pt; BORDER-LEFT: medium none; WIDTH: 325.8pt; PADDING-TOP: 1.4pt; BORDER-BOTTOM: windowtext 1pt solid" valign="top" width="434">
            <p class="a4" style="MARGIN-LEFT: 10.7pt"><span lang="EN-US">()</span><span lang="EN-US" style="FONT-FAMILY: 宋体"> </span><span lang="EN-US">.</span><span lang="EN-US" style="FONT-FAMILY: 宋体"> </span><span lang="EN-US">[]</span><span lang="EN-US" style="FONT-FAMILY: 宋体"> </span><span lang="EN-US">x++</span><span lang="EN-US" style="FONT-FAMILY: 宋体"> </span><span lang="EN-US">x</span><span style="FONT-FAMILY: 宋体; LETTER-SPACING: -1pt">&ndash;&ndash;</span> <span lang="EN-US">&nbsp;new &nbsp;typeof &nbsp;sizeof &nbsp;checked &nbsp;unchecked</span></p>
            </td>
        </tr>
        <tr>
            <td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 9.9pt; BORDER-TOP: medium none; PADDING-LEFT: 9.9pt; PADDING-BOTTOM: 1.4pt; BORDER-LEFT: medium none; WIDTH: 109.75pt; PADDING-TOP: 1.4pt; BORDER-BOTTOM: windowtext 1pt solid" valign="top" width="146">
            <p class="a4" style="MARGIN-LEFT: 10.7pt"><span style="FONT-FAMILY: 宋体">一元运算符</span></p>
            </td>
            <td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 9.9pt; BORDER-TOP: medium none; PADDING-LEFT: 9.9pt; PADDING-BOTTOM: 1.4pt; BORDER-LEFT: medium none; WIDTH: 325.8pt; PADDING-TOP: 1.4pt; BORDER-BOTTOM: windowtext 1pt solid" valign="top" width="434">
            <p class="a4" style="MARGIN-LEFT: 10.7pt"><span lang="EN-US">+ &nbsp;</span><span style="FONT-FAMILY: 宋体">&ndash;</span><span lang="EN-US"> ! &nbsp;~ &nbsp;++x &nbsp;</span><span style="FONT-FAMILY: 宋体; LETTER-SPACING: -1pt">&ndash;&ndash;</span><span lang="EN-US">x</span><span style="FONT-FAMILY: 宋体">和数据类型转换</span></p>
            </td>
        </tr>
        <tr>
            <td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 9.9pt; BORDER-TOP: medium none; PADDING-LEFT: 9.9pt; PADDING-BOTTOM: 1.4pt; BORDER-LEFT: medium none; WIDTH: 109.75pt; PADDING-TOP: 1.4pt; BORDER-BOTTOM: windowtext 1pt solid" valign="top" width="146">
            <p class="a4" style="MARGIN-LEFT: 10.7pt"><span style="FONT-FAMILY: 宋体">乘</span><span lang="EN-US">/</span><span style="FONT-FAMILY: 宋体">除运算符</span></p>
            </td>
            <td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 9.9pt; BORDER-TOP: medium none; PADDING-LEFT: 9.9pt; PADDING-BOTTOM: 1.4pt; BORDER-LEFT: medium none; WIDTH: 325.8pt; PADDING-TOP: 1.4pt; BORDER-BOTTOM: windowtext 1pt solid" valign="top" width="434">
            <p class="a4" style="MARGIN-LEFT: 10.7pt"><span lang="EN-US">* &nbsp;/ &nbsp;%</span></p>
            </td>
        </tr>
        <tr>
            <td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 9.9pt; BORDER-TOP: medium none; PADDING-LEFT: 9.9pt; PADDING-BOTTOM: 1.4pt; BORDER-LEFT: medium none; WIDTH: 109.75pt; PADDING-TOP: 1.4pt; BORDER-BOTTOM: windowtext 1pt solid" valign="top" width="146">
            <p class="a4" style="MARGIN-LEFT: 10.7pt"><span style="FONT-FAMILY: 宋体">加</span><span lang="EN-US">/</span><span style="FONT-FAMILY: 宋体">减运算符</span></p>
            </td>
            <td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 9.9pt; BORDER-TOP: medium none; PADDING-LEFT: 9.9pt; PADDING-BOTTOM: 1.4pt; BORDER-LEFT: medium none; WIDTH: 325.8pt; PADDING-TOP: 1.4pt; BORDER-BOTTOM: windowtext 1pt solid" valign="top" width="434">
            <p class="a4" style="MARGIN-LEFT: 10.7pt"><span lang="EN-US">+ &nbsp;&ndash;</span></p>
            </td>
        </tr>
        <tr>
            <td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 9.9pt; BORDER-TOP: medium none; PADDING-LEFT: 9.9pt; PADDING-BOTTOM: 1.4pt; BORDER-LEFT: medium none; WIDTH: 109.75pt; PADDING-TOP: 1.4pt; BORDER-BOTTOM: windowtext 1pt solid" valign="top" width="146">
            <p class="a4" style="MARGIN-LEFT: 10.7pt"><span style="FONT-FAMILY: 宋体">移位运算符</span></p>
            </td>
            <td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 9.9pt; BORDER-TOP: medium none; PADDING-LEFT: 9.9pt; PADDING-BOTTOM: 1.4pt; BORDER-LEFT: medium none; WIDTH: 325.8pt; PADDING-TOP: 1.4pt; BORDER-BOTTOM: windowtext 1pt solid" valign="top" width="434">
            <p class="a4" style="MARGIN-LEFT: 10.7pt"><span lang="EN-US">&lt;&lt; &nbsp;&gt;&gt;</span></p>
            </td>
        </tr>
        <tr>
            <td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 9.9pt; BORDER-TOP: medium none; PADDING-LEFT: 9.9pt; PADDING-BOTTOM: 1.4pt; BORDER-LEFT: medium none; WIDTH: 109.75pt; PADDING-TOP: 1.4pt; BORDER-BOTTOM: windowtext 1pt solid" valign="top" width="146">
            <p class="a4" style="MARGIN-LEFT: 10.7pt"><span style="FONT-FAMILY: 宋体">关系运算符</span></p>
            </td>
            <td style="BORDER-RIGHT: medium none; PADDING-RIGHT: 9.9pt; BORDER-TOP: medium none; PADDING-LEFT: 9.9pt; PADDING-BOTTOM: 1.4pt; BORDER-LEFT: medium none; WIDTH: 325.8pt; PADDING-TOP: 1.4pt; BORDER-BOTTOM: windowtext 1pt solid" valign="top" width="434">
            <p class="a4" style="MARGIN-LEFT: 10.7pt"><span lang="EN-US">&lt; &nbsp;&gt; &nbsp;&lt;= &nbsp;&gt;= &nbsp;is as</span></p>
            </td>
        </tr>
        <tr>
            <td 

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?