100165368.htm

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

HTM
255
字号
            <td style="PADDING-RIGHT: 9.9pt; PADDING-LEFT: 9.9pt; PADDING-BOTTOM: 1.4pt; WIDTH: 341.55pt; BORDER-TOP-STYLE: none; PADDING-TOP: 1.4pt; BORDER-BOTTOM: windowtext 1pt solid; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none" valign="top" width="455">
            <p class="a4" style="MARGIN-LEFT: 10.7pt"><span style="FONT-FAMILY: 宋体">数据类型的完全限定名</span><span lang="EN-US">(</span><span style="FONT-FAMILY: 宋体">包括命名空间名</span><span lang="EN-US">)</span></p>
            </td>
        </tr>
        <tr>
            <td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 9.9pt; PADDING-LEFT: 9.9pt; PADDING-BOTTOM: 1.4pt; WIDTH: 90.45pt; BORDER-TOP-STYLE: none; PADDING-TOP: 1.4pt; BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT-STYLE: none" valign="top" width="121">
            <p class="a4" style="MARGIN-LEFT: 10.7pt"><span lang="EN-US">Namespace</span></p>
            </td>
            <td style="PADDING-RIGHT: 9.9pt; PADDING-LEFT: 9.9pt; PADDING-BOTTOM: 1.4pt; WIDTH: 341.55pt; BORDER-TOP-STYLE: none; PADDING-TOP: 1.4pt; BORDER-BOTTOM: windowtext 1pt solid; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none" valign="top" width="455">
            <p class="a4" style="MARGIN-LEFT: 10.7pt"><span style="FONT-FAMILY: 宋体">定义数据类型的命名空间名</span></p>
            </td>
        </tr>
    </tbody>
</table>
</div>
<p class="MsoNormal" style="TEXT-ALIGN: left" align="left"><span lang="EN-US">&nbsp;</span></p>
<p class="1" style="MARGIN-LEFT: 37.55pt; FTEL: -16.1pt"><span lang="EN-US">●<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="FONT-FAMILY: 宋体">属性还可以进一步获取</span><span lang="EN-US">Type</span><span style="FONT-FAMILY: 宋体">对象的引用,这些引用表示相关的类,如表</span><span lang="EN-US">10-2</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; 10-2</span></p>
<div align="center">
<table class="MsoNormalTable" style="WIDTH: 432.55pt; BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-COLLAPSE: collapse; BORDER-BOTTOM-STYLE: none" cellspacing="0" cellpadding="0" width="577" border="1">
    <tbody>
        <tr>
            <td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 9.9pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 9.9pt; BORDER-LEFT-WIDTH: 1pt; BORDER-LEFT-COLOR: windowtext; PADDING-BOTTOM: 1.4pt; WIDTH: 118.8pt; PADDING-TOP: 1.4pt; BORDER-BOTTOM: windowtext 1pt solid" valign="top" width="158">
            <p class="a2"><span style="FONT-FAMILY: 黑体">属</span><span lang="EN-US" style="FONT-FAMILY: 'Times New Roman'">&nbsp;&nbsp;&nbsp; </span><span style="FONT-FAMILY: 黑体">性</span></p>
            </td>
            <td style="PADDING-RIGHT: 9.9pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 9.9pt; PADDING-BOTTOM: 1.4pt; WIDTH: 313.75pt; PADDING-TOP: 1.4pt; BORDER-BOTTOM: windowtext 1pt solid; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none" valign="top" width="418">
            <p class="a2"><span style="FONT-FAMILY: 黑体">返回对应的</span><span lang="EN-US">Type</span><span style="FONT-FAMILY: 黑体">引用</span></p>
            </td>
        </tr>
        <tr>
            <td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 9.9pt; PADDING-LEFT: 9.9pt; PADDING-BOTTOM: 1.4pt; WIDTH: 118.8pt; BORDER-TOP-STYLE: none; PADDING-TOP: 1.4pt; BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT-STYLE: none" valign="top" width="158">
            <p class="a4" style="MARGIN-LEFT: 0cm"><span lang="EN-US">BaseType</span></p>
            </td>
            <td style="PADDING-RIGHT: 9.9pt; PADDING-LEFT: 9.9pt; PADDING-BOTTOM: 1.4pt; WIDTH: 313.75pt; BORDER-TOP-STYLE: none; PADDING-TOP: 1.4pt; BORDER-BOTTOM: windowtext 1pt solid; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none" valign="top" width="418">
            <p class="a4" style="MARGIN-LEFT: 10.7pt"><span style="FONT-FAMILY: 宋体">这个</span><span lang="EN-US">Type</span><span style="FONT-FAMILY: 宋体">的直接基本类型</span></p>
            </td>
        </tr>
        <tr>
            <td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 9.9pt; PADDING-LEFT: 9.9pt; PADDING-BOTTOM: 1.4pt; WIDTH: 118.8pt; BORDER-TOP-STYLE: none; PADDING-TOP: 1.4pt; BORDER-BOTTOM: windowtext 1pt solid; BORDER-LEFT-STYLE: none" valign="top" width="158">
            <p class="a4" style="MARGIN-LEFT: 0cm"><span lang="EN-US">UnderlyingSystemType</span></p>
            </td>
            <td style="PADDING-RIGHT: 9.9pt; PADDING-LEFT: 9.9pt; PADDING-BOTTOM: 1.4pt; WIDTH: 313.75pt; BORDER-TOP-STYLE: none; PADDING-TOP: 1.4pt; BORDER-BOTTOM: windowtext 1pt solid; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none" valign="top" width="418">
            <p class="a4" style="MARGIN-LEFT: 10.7pt"><span style="FONT-FAMILY: 宋体">这个</span><span lang="EN-US">Type</span><span style="FONT-FAMILY: 宋体">在</span><span lang="EN-US"> .NET </span><span style="FONT-FAMILY: 宋体">运行库中映射的类型</span><span lang="EN-US"> (</span><span style="FONT-FAMILY: 宋体">某些</span><span lang="EN-US">.NET</span><span style="FONT-FAMILY: 宋体">基类实际上映射由</span><span lang="EN-US">IL</span><span style="FONT-FAMILY: 宋体">识别的特定预定义类型</span><span lang="EN-US">)</span></p>
            </td>
        </tr>
    </tbody>
</table>
</div>
<p class="MsoNormal" style="TEXT-ALIGN: left" align="left"><span lang="EN-US">&nbsp;</span></p>
<p class="1" style="MARGIN-LEFT: 37.25pt; FTEL: -15.8pt"><span lang="EN-US">●<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="FONT-FAMILY: 宋体; LETTER-SPACING: -0.1pt">许多</span><span lang="EN-US" style="LETTER-SPACING: -0.1pt">Boolean </span><span style="FONT-FAMILY: 宋体; LETTER-SPACING: -0.1pt">属性表示这个类型是一个类、还是一个枚举等。这些属性包括</span><span lang="EN-US">IsAbstract</span><span style="FONT-FAMILY: 宋体">、</span><span lang="EN-US">IsArray</span><span style="FONT-FAMILY: 宋体">、</span><span lang="EN-US">IsClass</span><span style="FONT-FAMILY: 宋体">、</span><span lang="EN-US">IsEnum</span><span style="FONT-FAMILY: 宋体">、</span><span lang="EN-US">IsInterface</span><span style="FONT-FAMILY: 宋体">、</span><span lang="EN-US">IsPointer</span><span style="FONT-FAMILY: 宋体">、</span><span lang="EN-US">IsPrimitive(</span><span style="FONT-FAMILY: 宋体">一种预定义的基本数据类型</span><span lang="EN-US">)</span><span style="FONT-FAMILY: 宋体">、</span> <span lang="EN-US">IsPublic</span><span style="FONT-FAMILY: 宋体">、</span><span lang="EN-US">IsSealed</span><span style="FONT-FAMILY: 宋体">和</span><span lang="EN-US">IsValueType</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">例如,使用一个基本数据类型:</span></p>
<p class="2" style="MARGIN-TOP: 8.15pt; MARGIN-LEFT: 21.45pt; MARGIN-RIGHT: 0cm; FTEL: 18.45pt"><span lang="EN-US">Type intType = typeof(int);</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; LINE-HEIGHT: 15pt; FTEL: 18.45pt"><span lang="EN-US">Console.WriteLine(intType.IsAbstract); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // writes false</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; LINE-HEIGHT: 15pt; FTEL: 18.45pt"><span lang="EN-US">Console.WriteLine(intType.IsClass);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // writes false</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; LINE-HEIGHT: 15pt; FTEL: 18.45pt"><span lang="EN-US">Console.WriteLine(intType.IsEnum);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // writes false</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; LINE-HEIGHT: 15pt; FTEL: 18.45pt"><span lang="EN-US">Console.WriteLine(intType.IsPrimitive); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // writes true</span></p>
<p class="2" style="MARGIN-TOP: 0cm; MARGIN-LEFT: 21.45pt; MARGIN-RIGHT: 0cm; FTEL: 18.45pt"><span lang="EN-US">Console.WriteLine(intType.IsValueType); &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // writes true</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">或者使用</span><span lang="EN-US">Vector</span><span style="FONT-FAMILY: 宋体">类:</span></p>
<p class="2" style="MARGIN-TOP: 8.15pt; MARGIN-LEFT: 21.45pt; MARGIN-RIGHT: 0cm; FTEL: 18.45pt"><span lang="EN-US">Type intType = typeof(Vector);</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; LINE-HEIGHT: 15pt; FTEL: 18.45pt"><span lang="EN-US">Console.WriteLine(intType.IsAbstract); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // writes false</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; LINE-HEIGHT: 15pt; FTEL: 18.45pt"><span lang="EN-US">Console.WriteLine(intType.IsClass);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // writes true</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; LINE-HEIGHT: 15pt; FTEL: 18.45pt"><span lang="EN-US">Console.WriteLine(intType.IsEnum);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // writes false</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; LINE-HEIGHT: 15pt; FTEL: 18.45pt"><span lang="EN-US">Console.WriteLine(intType.IsPrimitive); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // writes false</span></p>
<p class="2" style="MARGIN-TOP: 0cm; MARGIN-LEFT: 21.45pt; MARGIN-RIGHT: 0cm; FTEL: 18.45pt"><span lang="EN-US">Console.WriteLine(intType.IsValueType);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // writes false</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">您也可以获取定义类型的程序集的引用,该引用作为</span><span lang="EN-US">System.Reflection.Assembly</span><span style="FONT-FAMILY: 宋体">类实例的一个引用被返回:</span></p>
<p class="2" style="MARGIN-TOP: 8.15pt; MARGIN-LEFT: 21.45pt; MARGIN-RIGHT: 0cm; FTEL: 18.45pt"><span lang="EN-US">Type t = typeof (Vector);</span></p>
<p class="2" style="MARGIN-TOP: 0cm; MARGIN-LEFT: 21.45pt; MARGIN-RIGHT: 0cm; FTEL: 18.45pt"><span lang="EN-US">Assembly containingAssembly = new Assembly(t);</span></p>
<h4 style="FTEL: 21.45pt"><span lang="EN-US">2. </span><span style="FONT-FAMILY: 黑体">方法</span></h4>
<p class="MsoNormal"><a ftel="Typemethods"></a><a ftel="GetMethods1"><span lang="EN-US">System.Type</span></a><span style="FONT-FAMILY: 宋体">的大多数方法都用于获取对应数据类型的成员信息:构造函数、属性、方法和事件等。它有许多方法,但它们都有相同的模式。例如,有两个方法可以获取数据类型的方法信息:</span><span lang="EN-US">GetMethod() </span><span style="FONT-FAMILY: 宋体">和</span> <span lang="EN-US">GetMethods()</span><span style="FONT-FAMILY: 宋体">。</span><span lang="EN-US">GetMethod()</span><span style="FONT-FAMILY: 宋体">方法返回</span><span lang="EN-US">System.Reflection.MethodInfo</span><span style="FONT-FAMILY: 宋体">对象的一个引用,其中包含一个方法的信息。</span><span lang="EN-US">GetMethods()</span><span style="FONT-FAMILY: 宋体">返回这种引用的一个数组。其区别是</span><span lang="EN-US">GetMethods()</span><span style="FONT-FAMILY: 宋体">返回所有方法的信息,而</span><span lang="EN-US">GetMethod()</span><span style="FONT-FAMILY: 宋体">返回一个方法的信息,其中该方法包含特定的参数列表。这两个方法都有重载方法,该重载方法有一个附加的参数,</span><span lang="EN-US">BindingFlags</span><span style="FONT-FAMILY: 宋体">枚举值,表示应返回哪些成员,例如,返回公有成员、实例成员和静态成员等。</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">例如,</span><span lang="EN-US">GetMethods()</span><span style="FONT-FAMILY: 宋体">最简单的一个重载方法不带参数,返回数据类型所有公共方法的信息:</span></p>
<p class="2" style="MARGIN-TOP: 8.15pt; MARGIN-LEFT: 21.45pt; MARGIN-RIGHT: 0cm; FTEL: 18.45pt"><span lang="EN-US">Type t = typeof(double);</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; LINE-HEIGHT: 15pt; FTEL: 18.45pt"><span lang="EN-US">MethodInfo [] methods = t.GetMethods();</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; LINE-HEIGHT: 15pt; FTEL: 18.45pt"><span lang="EN-US">foreach (MethodInfo nextMethod in methods)</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; LINE-HEIGHT: 15pt; FTEL: 18.45pt"><span lang="EN-US">{</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; LINE-HEIGHT: 15pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp;</span></p>
<p class="2" style="MARGIN-TOP: 0cm; MARGIN-LEFT: 21.45pt; MARGIN-RIGHT: 0cm; FTEL: 18.45pt"><span lang="EN-US">&nbsp;&nbsp; // etc.</span></p>
<p class="MsoNormal"><span lang="EN-US">Type</span><span style="FONT-FAMILY: 宋体">的成员方法如表</span><span lang="EN-US">10-3</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; 10-3</span></p>
<div align="center">
<table class="MsoNormalTable" style="WIDTH: 435.7pt; BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-COLLAPSE: collapse; BORDER-BOTTOM-STYLE: none" cellspacing="0" cellpadding="0" width="581" border="1">
    <tbody>
        <tr>
            <td style="BORDER-RIGHT: windowtext 1pt solid; PADDING-RIGHT: 9.9pt; BORDER-TOP: windowtext 1pt solid; PADDING-LEFT: 9.9pt; BORDER-LEFT-WIDTH: 1pt; BORDER-LEFT-COLOR: windowtext; PADDING-BOTTOM: 1.4pt; WIDTH: 123.85pt; PADDING-TOP: 1.4pt; BORDER-BOTTOM: windowtext 1pt solid" valign="top" width="165">
            <p class="a2"><span style="FONT-FAMILY: 黑体">返回的对象类型</span></p>
            </td>

⌨️ 快捷键说明

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