c#重点知识详解(四)

c#重点知识详解(四)

ID:22369975

大小:57.50 KB

页数:6页

时间:2018-10-28

c#重点知识详解(四)_第1页
c#重点知识详解(四)_第2页
c#重点知识详解(四)_第3页
c#重点知识详解(四)_第4页
c#重点知识详解(四)_第5页
资源描述:

《c#重点知识详解(四)》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、c#重点知识详解(四)>>教育资源库第四章:C#中的加框与去框C#运行时中有两种类型:引用类型(reference)(在C#中用类声明)和值类型(value)(在C#中用结构声明)。引用和值类型在几个重要方面有所不同。值类型“感觉上”象一个数据。它包括预定义数值类型(如int、bool)以及用户定义的类型(circle、Point等)。如上文所述,值类型的变量是实际的值,所以在您使用变量时,通常处理的是实际的值。1>:首先,让我们来看一看值类型(value)(在C#中用结构声明)。对于任何类型的非框机构都又如下的形。//--------------

2、-----------------------structT_Point{Tx,y;T_Point(Tx,y){this.x=x;this.y=y}}//-------------------------------------sample:classtest{structPoint{publicintx,y;publicPoint(intx,inty){this.x=x;this.y=y;}}publicstaticvoidMain(){Pointp=neain(){Pointp=newPoint(10,10);objectf=p;p.x=20;Con

3、sole.Write(((Point)f).x);Console.Write(p.x);}}让我么来看一看最后的结果是什么?很奇怪吗,结果是20,20.在第二次指定变量后,p和f指向同一对象。这意味着修改p的名称也将改变f的名称,因为它们引用同一实例。修改类值的成员称为“变更者”,而不具有任何变更者的类称为不可变类。不可变类的存在可以使类的行为类似于值类,但不能写入为值类。在c#语言中同时使用引用和值两种类型是很重要的。值类型轻便高效,而引用类型适用于面向对象的开发。但是,尽管我们有两了种类型,但有时我们需要的是更为简单的模型,使用单一的、能够囊括所有可

4、能值的类型。这样一个通用基类能够调用任何值的虚函数。写入能够存储任何值的集合类。为实现这一目的,c#语言运行时采用一种方法让值类型在需要时转化为引用类型,即通过称为加框的进程。被加框的类型是通用基类,可以被各种类型的对象引用。解框inti=123;objectk=i;//将inti加框到对象k中intj=(int)k;//解框k到value2当赋值给k时,作为赋值的一部分,C#编译器将创建足够容纳堆中int的引用类型包装,将值复制到该加框,然后将加框标记为实际类型,以便运行时了解加框的类型。要从加框中取值,必须使用强制类型装换来指定加框的类型(对象能够保

5、留任何类型)。在执行过程中,运行时将检查对象变量引用的类型是否为强制类型转换中指定的类型。如果类型正确,值将从加框中复制回值类型变量。如果类型不正确,将导致异常。请注意解除加框过程中不会进行其他转换;类型必须完全匹配。请注意以下代码:longi=123;objectk=i;//将longi加框到对象k中ulongj=(ulong)k;#error由于加框类型于解框类型的不同将出错。如果认为像c++语言一样下面的操作将正确那也是不对的。longi=123;objectk=i;intj=(int)k;#error最后总结一下加框和解框。加框和解框使编写和使用

6、具有通用对象参数的函数变得简单而直接。>>>>这篇文章来自..,。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。