欢迎来到unity学习、unity培训、unity企业培训教育专区,这里有很多U3D资源、U3D培训视频、U3D教程、U3D常见问题、U3D项目源码,我们致力于打造业内unity3d培训、学习第一品牌。
一、异常:异常是程序执行时遇到的任何错误情况或意外行为。
1、c#异常处理所用到的几个关键字:
1)try:用于检查发生的异常,并帮助发送任何可能的异常。
2)catch:以控制权更大的方式处理错误,可以有多个catch子句。
3)finally:无论是否引发了异常,finally的代码块都将被执行。
4)throw:用于引发异常,可引发预定义异常和自定义异常。
try { 程序代码块;}
catch(Exception e){ 异常处理代码块;}
finally { 无论是否发生异常,均要执行的代码块;}
2、每个try语句必须有一个或多个catch语句对应,try代码块与catch代码块以及finally代码块之间不能有其他语句。
3、异常具有以下特点:
1)各种类型的异常最终都是由System.Exception 派生而来。
2)在可能引发异常的语句周围使用 try 块。
3)一旦 try 块中发生异常,控制流将跳转到第一个关联的异常处理程序在 C# 中,catch 关键字用于定义异常处理程序。
4)程序可以使用 throw 关键字显式地引发异常。
5)即使发生异常也会执行 finally 块中的代码。 使用 finally 块释放资源,例如,关闭在 try 块中打开的任何流或文件。
二、封装:将数据和操作组合到一起,并决定哪些数据和操作对外是可见的。
1、概念:可以把程序按某种规则分成很多“块“,块与块之间可能会有联系,每个块都有一个可变部分和一个稳定的部分。我们需要把可变的部分和稳定的部分分离出来,将稳定的部分暴露给其他块,而将可变的部分隐藏起来,以便于随时可以让它修改。
2、封装的意义:保护或者防止代码(数据)被我们无意中破坏。在面向对象程序设计中数据被看作是一个中心的元素并且和使用它的函数结合的很密切,从而保护不被其它的函数意外的修改。封装提供了一个有效的途径来保护数据不被意外的破坏。相比我们将数据(用域来实现)在程序中定义为公用的(public)我们将它们(fields)定义为私有的(privat)在很多方面会更好。
3、好处:
其一: 使用者只需要了解如何通过类的接口使用类,而不用关心类的内部数据结构和数据组织方法。
其二:高内聚,低耦合一直是我们所追求的,用好封装恰恰可以减少耦合。
其三:只要对外接口不改变,可以任意修改内部实现,这个可以很好的应对变化。
其四:类具有了简洁清晰的对外接口,降低了使用者的学习过程。
4、用方法封装。
using system;
public class Department
{
private string departname;
.......
// 读方法
public string GetDepartname()
{return departname; }
//写方法
public void SetDepartname( string a)
{departname=a; }
}
通过上面的方法,我们可以保护私有数据不被外部程序所破坏。现在我们使用两个不同的方法来写和读数据
public static int Main(string[] args)
{
Department d = new Department();
d.SetDepartname("ELECTRONICS");
Console.WriteLine("The Department is :"+d.GetDepartname());
return 0;
}
在上面的例子中,我们不能直接访问类Department的实例d中的私有数据(string departname),我们只能通过这两个方法来访问。
5、用属性来封装。
using system;
public class Department
{
private string departname;
public string Departname
{
get
{
return departname;
}
set
{
departname=value;
}
}
}
public class Departmentmain
{
public static int Main(string[] args)
{
Department d= new Department();
d.departname="Communication";
Console.WriteLine("The Department is:{0}",d.Departname);
return 0;
}
}
通过上面的例子,我们可以看到如何通过属性来实现封装。属性具有两种操作get和set。Get用来返回属性域的值。Set通过value这个变量来给属性域赋值。属性可以设为只读的(read-only)。这只需属性只具有一个set操作。
使用属性的好处在于对象的使用者可以用一条语句来操作内部的数据。