文档章节

c#面向对象编程(二)

来来叔叔
 来来叔叔
发布于 2017/08/04 23:57
字数 1288
阅读 3
收藏 0
 
一、装箱与拆箱
      装箱转换允许将“值类型”隐式转换为“引用类型”。存在下列装箱转换:
◆从任何“值类型”(包括任何“枚举类型”)到类型object。
◆从任何“值类型”(包括任何“枚举类型”)到类型System.ValueType。
◆从任何“值类型”到“值类型”实现的任何“接口类型”。
◆从任何“枚举类型”到System.Enum类型。
将“值类型”的值装箱的操作包括:分配一个对象实例并将“值类型”的值复制到该实例中。
int i = 123;
object box = i;
        拆箱也称为取消装箱转换。取消装箱转换允许将引用类型显式转换为值类型。一个取消装箱操作包括以下两个步骤:首先检查对象实例是否为给定值类型的一个装了箱的值,然后将该值从实例中复制出来。
为使到给定值类型的取消装箱转换在运行时取得成功,源操作数的值必须是对某个对象的引用,而该对象先前是通过将该值类型的某个值装箱而创建的。
object box = 123;
int i = (int)box;
二、结构和接口
      结构与类有很多相似之处:结构可以实现接口,并且可以具有与类相同的成员类型。然而,结构在几个重要方面不同于类:结构为值类型而不是引用类型,并且结构不支持继承。结构的值存储在“在堆栈上”或“内联”。
当向方法传递结构时,将传递该结构的副本,而传递类实例时,将传递一个引用。
对于结构,不像类那样存在继承。一个结构不能从另一个结构或类继承,而且不能作为一个类的基。但是结构可实现接口,而且实现方式与类实现接口的方式完全相同。
     接口可以包含方法、属性、事件和索引器。接口本身不提供它所定义的成员的实现。接口只指定实现该接口的类或接口必须提供的成员。
三、集合与索引器
      集合基本上是由一群相同类型的对象所组成的。利用集合,可以使用相同的语法,一次处理多个对象。.NET对于集合的支持,集中于System.Collection命名空间里的一组集合接口以及实现这些接口的派生类;例如,Stack类实现ICollection接口并且提供后进先出(last-in first-out)的数据结构集合对象,Hashtable类则实现Idictionary接口,为一应用散列算法,提供高效率搜索索引键值得字典型键值数据集合;这些不同的类与接口,定义了实现集合所需的功能。
      了解.NET对于集合所提供的支持,首先必须从IEnumerable以及IEnumerator这两个接口开始进行说明,其提供了从集合中,存取元素对象的基础功能,定义列举集合内所含元素的相关方法。所有的集合类,均会继承IEnumerable这个接口,这样做让集合对象能够支持foreach语法,支持在集合中利用循环,一一浏览列举其中元素的功能;Ienumerator由IEnumerable接口所定义的GetEnumerator方法所取得,其定义了存取集合元素所需的相关方法。
索引器(indexer)使得可以像数组那样对对象使用下标。已为我们提供了通过索引方式方便地访问类的数据信息的方法。
      索引器的声明格式:
      [修饰符]    数据类型    this [int index] {访问函数体代码}
class IndexStud
{     private string[] sname;
      public IndexStud()//构造函数
      {    
         sname=new string[]{"Smith","Rose","Mary","Robot","Hamlat"};
      }
     public string this[int index]
     {      
        get{return sname[index];}
        set{sname[index]=value;}
     }

IndexStud stud=new IndexStud();
Console.Write("{0}",stud[0]);
四、异常处理
      在C# 里,异常处理就是C# 为处理错误情况提供的一种机制。它为每种错误情况提供了定制的处理方式,并且把标识错误的代码与处理错误的代码分离开来。
      对.NET类来说,一般的异常类System.Exception派生于System.Object。还有许多定义好的异常类(如:System.SystemException、System.ApplicationException等),他们又派生于System.Exception类。其中System.ApplicationException类是第三方定义的异常类,如果我们要自定义异常类,那么就应派生于它。
      在代码中对异常进行处理,一般要使用三个代码块:
◆Try 块的代码是程序中可能出现错误的操作部分。
◆Catch 块的代码是用来处理各种错误的部分(可以有多个)。必须正确排列捕获异常的catch子句,范围小的Exception放在前面的catch。即如果Exception之间存在继承关系,就应把子类的Exception放在前面的catch子句中。
◆Finally 块的代码用来清理资源或执行要在try块末尾执行的其他操作(可以省略)。且无论是否产生异常,Finally块都会执行。

© 著作权归作者所有

上一篇: CDialog
下一篇: ppm图像格式
来来叔叔
粉丝 0
博文 100
码字总数 55732
作品 0
广州
高级程序员
私信 提问
机房合作开篇之作——了解C#语言

前言 C#语言 环境 程序结构 小结 前言 近期小编开始了机房合作,前期是文档编写和构思,正在进行阶段,开发机房收费系统第三版使用的是C#语言,之前对于这门语言的接触是在C#视频和设计模式两...

m18633778874
2017/11/24
0
0
面向对象基础

一、什么是面向对象编程 在人类社会中会对各个东西进行分类,譬如狗和猫都属于动物这个类别。对于动物这个类别,猫和狗都有相同的特征和行为,也有一些各自独特的行为特征。 把相同的属性(特...

Lubby
2016/10/13
33
0
F#系列随笔索引

循着我的Google笔记本,我看到第一条与F#相关的笔记发生在4月7日,到今天刚好6个月整。 为何要学习F#?这是个首当其冲的问题,跟当初“Java还是C#”这样的问题不同,现在是在学习一门新语言。...

长征3号
2017/12/21
0
0
Python-面向对象

(个人感觉真心不错 ,转过来一起学习一下 ) 概述 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分...

ala9981
2016/03/20
0
0
Python基础6-1 面向对象编程

概述 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类和封装,让开发“更快更好更强...” 面向过...

jinmy001
2017/07/21
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Excption与Error包结构,OOM 你遇到过哪些情况,SOF 你遇到过哪些情况

Throwable 是 Java 中所有错误与异常的超类,Throwable 包含两个子类,Error 与 Exception 。用于指示发生了异常情况。 Java 抛出的 Throwable 可以分成三种类型。 被检查异常(checked Exc...

Garphy
今天
5
0
计算机实现原理专题--二进制减法器(二)

在计算机实现原理专题--二进制减法器(一)中说明了基本原理,现准备说明如何来实现。 首先第一步255-b运算相当于对b进行按位取反,因此可将8个非门组成如下图的形式: 由于每次做减法时,我...

FAT_mt
昨天
6
0
好程序员大数据学习路线分享函数+map映射+元祖

好程序员大数据学习路线分享函数+map映射+元祖,大数据各个平台上的语言实现 hadoop 由java实现,2003年至今,三大块:数据处理,数据存储,数据计算 存储: hbase --> 数据成表 处理: hive --> 数...

好程序员官方
昨天
7
0
tabel 中含有复选框的列 数据理解

1、el-ui中实现某一列为复选框 实现多选非常简单: 手动添加一个el-table-column,设type属性为selction即可; 2、@selection-change事件:选项发生勾选状态变化时触发该事件 <el-table @sel...

everthing
昨天
6
0
【技术分享】TestFlight测试的流程文档

上架基本需求资料 1、苹果开发者账号(如还没账号先申请-苹果开发者账号申请教程) 2、开发好的APP 通过本篇教程,可以学习到ios证书申请和打包ipa上传到appstoreconnect.apple.com进行TestF...

qtb999
昨天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部