100162753.htm
来自「C#高级编程(第三版),顶死你们。。 。up」· HTM 代码 · 共 100 行
HTM
100 行
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>
3.1 类和结构
</title></head>
<body>
<div class="area">
<div class="col1">
<div class="lineBlue">
</div>
<!-- title -->
<div class="arcTitle">
<h1>
<a href="../16">
C#高级编程(第3版)【全文连载】
</a>
</h1>
<div style="text-align: center; font-size: 15px">
<a href="100162753.htm">
3.1 类和结构
</a>
</div>
<div style="text-align: center; font-size: 15px">
<a class="url" href="../../default.htm">http://book.csdn.net/</a>
2006-8-17 16:57:00
</div>
<div style="margin: 0px auto; width: 700px; border: solid 1px #0b5f98;">
<div style="float: left; width: 16px; background-color: #0b5f98; color: White; padding: 1px;">
图书导读
</div>
<div style="float: right; width: 670px; text-align: left; line-height: 16pt; padding-left: 2px">
<!--导读-->
<h1 id="divCurrentNode" style="color: #b83507; width: 100%; text-align: left; font-size: 12px; padding-left: 2px">当前章节:<a href='100162753.htm'><font color='red'>3.1 类和结构</font></a></h1>
<div id="divRelateNode" style="padding-left: 2px">
<div style='float:left;width:49%'>·<a href='100162750.htm'>2.13 C#预处理器指令</a></div><div style='float:right;width:49%'>·<a href='100162751.htm'>2.14 C#编程规则</a></div><div style='float:left;width:49%'>·<a href='100162752.htm'>2.15 小结</a></div><div style='float:right;width:49%'>·<a href='100162754.htm'>3.2 类成员</a></div><div style='float:left;width:49%'>·<a href='100162755.htm'>3.3 结构</a></div><div style='float:right;width:49%'>·<a href='100162756.htm'>3.4 Object类</a></div></div>
</div>
</div>
</div>
<!-- main -->
<div id="main">
<div id="text"> <link href="css.css" rel="stylesheet" type="text/css" /><p class="MsoNormal"><span style="FONT-FAMILY: 宋体">到目前为止,我们介绍了组成</span><span lang="EN-US">C#</span><span style="FONT-FAMILY: 宋体">语言的主要内容<span style="LETTER-SPACING: -0.5pt">——</span></span><span style="LETTER-SPACING: -0.5pt"> </span><span style="FONT-FAMILY: 宋体; LETTER-SPACING: -0.5pt">变量的声明、</span><span style="FONT-FAMILY: 宋体">数据类型和程序流语句,并简要介绍了一个只包含</span><span lang="EN-US">Main()</span><span style="FONT-FAMILY: 宋体">方法的完整小例子。但还没有介绍如何把这些内容组合在一起,构成一个完整的程序,其关键就在于对类的处理。这就是本章的主题。本章的主要内容如下:</span></p>
<p class="1" style="MARGIN-LEFT: 37.55pt; TEXT-INDENT: -16.1pt"><span lang="EN-US">●<span style="FONT: 7pt 'Times New Roman'"> </span></span><span style="FONT-FAMILY: 宋体">类和结构的区别</span></p>
<p class="1" style="MARGIN-LEFT: 37.55pt; TEXT-INDENT: -16.1pt"><span lang="EN-US">●<span style="FONT: 7pt 'Times New Roman'"> </span></span><span style="FONT-FAMILY: 宋体">字段、属性和方法</span></p>
<p class="1" style="MARGIN-LEFT: 37.55pt; TEXT-INDENT: -16.1pt"><span lang="EN-US">●<span style="FONT: 7pt 'Times New Roman'"> </span></span><span style="FONT-FAMILY: 宋体">按值和引用传送参数</span></p>
<p class="1" style="MARGIN-LEFT: 37.55pt; TEXT-INDENT: -16.1pt"><span lang="EN-US">●<span style="FONT: 7pt 'Times New Roman'"> </span></span><span style="FONT-FAMILY: 宋体">方法重载</span></p>
<p class="1" style="MARGIN-LEFT: 37.55pt; TEXT-INDENT: -16.1pt"><span lang="EN-US">●<span style="FONT: 7pt 'Times New Roman'"> </span></span><span style="FONT-FAMILY: 宋体">构造函数和静态构造函数</span></p>
<p class="1" style="MARGIN-LEFT: 37.55pt; TEXT-INDENT: -16.1pt"><span lang="EN-US">●<span style="FONT: 7pt 'Times New Roman'"> </span></span><span style="FONT-FAMILY: 宋体">只读字段</span></p>
<p class="1" style="MARGIN-LEFT: 37.55pt; TEXT-INDENT: -16.1pt"><span lang="EN-US">●<span style="FONT: 7pt 'Times New Roman'"> </span></span><span lang="EN-US">Object</span><span style="FONT-FAMILY: 宋体">类,其他类型都从该类派生而来</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">第</span><span lang="EN-US">4</span><span style="FONT-FAMILY: 宋体">章将介绍继承以及与继承相关的特性。</span></p>
<p class="a3" style="MARGIN-TOP: 8.15pt; TEXT-INDENT: 21.45pt"><span style="FONT-FAMILY: 黑体">提示:</span></p>
<p class="a1" style="MARGIN-BOTTOM: 8.15pt; TEXT-INDENT: 21.45pt"><span style="FONT-FAMILY: 楷体_GB2312">本章将讨论与类相关的基本语法,但假定您已经熟悉了使用类的基本原则,例如,知道构造函数和属性的含义,因此我们只是大致论述如何把这些原则应用于</span><span lang="EN-US">C#</span><span style="FONT-FAMILY: 楷体_GB2312">代码。如果您不熟悉类的概念,请参阅附录</span><span lang="EN-US">A</span><span style="FONT-FAMILY: 楷体_GB2312">,并可从网站</span><span lang="EN-US">www.wrox.com</span><span style="FONT-FAMILY: 楷体_GB2312">上下载本书的代码。</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">本章介绍的这些概念不一定得到了大多数面向对象语言的支持。例如对象构造函数是您熟悉的、使用广泛的一个概念,但静态构造函数就是</span><span lang="EN-US">C#</span><span style="FONT-FAMILY: 宋体">的新增内容,所以我们将解释静态构造函数的工作原理。</span></p>
<h2 style="MARGIN: 11.4pt 0cm"><span lang="EN-US">3.1 </span><span style="FONT-FAMILY: 楷体_GB2312">类和结构</span></h2>
<p class="MsoNormal"><span><span style="FONT-FAMILY: 宋体">类和结构实际上都是创建对象的模板,每个对象都包含数据,并提供了处理和访问数据的方法。类定义了每个类对象</span><span lang="EN-US">(</span></span><span style="FONT-FAMILY: 宋体">称为实例</span><span lang="EN-US">)</span><span style="FONT-FAMILY: 宋体">可以包含什么数据和功能。例如,如果一个类表示一个顾客,就可以定义字段</span><span lang="EN-US">CustomerID</span><span style="FONT-FAMILY: 宋体">、</span><span lang="EN-US">FirstName</span><span style="FONT-FAMILY: 宋体">、</span><span lang="EN-US">LastName</span><span style="FONT-FAMILY: 宋体">和</span><span lang="EN-US">Address</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">class PhoneCustomer</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"> public const string DayOfSendingBill ="Monday";</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; TEXT-INDENT: 27.65pt"><span lang="EN-US"> public int CustomerID;</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; TEXT-INDENT: 18.45pt"><span lang="EN-US"> public string FirstName;</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; TEXT-INDENT: 18.45pt"><span lang="EN-US"> public string LastName;</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">(</span><span style="FONT-FAMILY: 宋体">类是存储在堆</span><span lang="EN-US">(heap)</span><span style="FONT-FAMILY: 宋体">上的引用类型,而结构是存储在堆栈</span><span lang="EN-US">(stack)</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><span lang="EN-US">)</span><span style="FONT-FAMILY: 宋体">与类不同。较小的数据类型使用结构可提高性能。但在语法上,结构与类非常相似,主要的区别是使用关键字</span><span lang="EN-US">struct</span><span style="FONT-FAMILY: 宋体">代替</span><span lang="EN-US">class</span><span style="FONT-FAMILY: 宋体">来声明结构。例如,如果希望所有的</span><span lang="EN-US">PhoneCustomer</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">struct PhoneCustomerStruct</span></p>
<p class="a6" style="MARGIN-LEFT: 21.45pt; TEXT-INDENT: 18.45pt"><span lang="EN-US">{</span></p>
<p class="a6" style="MARGIN-LEFT: 21.45pt; TEXT-INDENT: 18.45pt"><span lang="EN-US"> public const string DayOfSendingBill = "Monday";</span></p>
<p class="a6" style="MARGIN-LEFT: 21.45pt; TEXT-INDENT: 18.45pt"><span lang="EN-US"> public int CustomerID;</span></p>
<p class="a6" style="MARGIN-LEFT: 21.45pt; TEXT-INDENT: 18.45pt"><span lang="EN-US"> public string FirstName;</span></p>
<p class="a6" style="MARGIN-LEFT: 21.45pt; TEXT-INDENT: 18.45pt"><span lang="EN-US"> public string LastName;</span></p>
<p class="a6" 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">new</span><span style="FONT-FAMILY: 宋体">来声明实例:这个关键字创建对象并对其进行初始化。在下面的例子中,类和结构的字段值都默认为</span><span lang="EN-US">0</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">PhoneCustomer myCustomer = new PhoneCustomer(); //works for a class</span></p>
<p class="2" style="MARGIN: 0cm 0cm 8.15pt 21.45pt; TEXT-INDENT: 18.45pt"><span lang="EN-US">PhoneCustomerStruct myCustomer2 = new PhoneCustomerStruct(); // works for a struct</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">在大多数情况下,类要比结构常用得多。因此,我们先讨论类,然后指出类和结构的区别,以及选择使用结构而不使用类的特殊原因。但除非特别说明,否则就可以假定用于类的代码也适用于结构。</span></p></div>
<!-- page -->
<div class="page" style="text-align: center">
<a href="100162752.htm">上一页</a> <a href="index.html">首页</a> <a href="100162754.htm">下一页</a>
</div>
<div style="margin: 0px auto; width: 700px; border: solid 1px #0b5f98;">
<div style="float: left; width: 16px; background-color: #0b5f98; color: White; padding: 1px;">
图书导读
</div>
<div style="float: right; width: 670px; text-align: left; line-height: 16pt; padding-left: 2px">
<!--导读-->
<h1 id="divCurrentNode2" style="color: #b83507; width: 100%; text-align: left; font-size: 12px; padding-left: 2px">当前章节:<a href='100162753.htm'><font color='red'>3.1 类和结构</font></a></h1>
<div id="divRealteNod2" style="padding-left: 2px">
<div style='float:left;width:49%'>·<a href='100162750.htm'>2.13 C#预处理器指令</a></div><div style='float:right;width:49%'>·<a href='100162751.htm'>2.14 C#编程规则</a></div><div style='float:left;width:49%'>·<a href='100162752.htm'>2.15 小结</a></div><div style='float:right;width:49%'>·<a href='100162754.htm'>3.2 类成员</a></div><div style='float:left;width:49%'>·<a href='100162755.htm'>3.3 结构</a></div><div style='float:right;width:49%'>·<a href='100162756.htm'>3.4 Object类</a></div></div>
</div>
</div>
</div></div>
</body>
</html>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?