WEB开发网
开发学院软件开发C语言 创建常量、原子性的值类型 阅读

创建常量、原子性的值类型

 2009-03-26 08:22:16 来源:WEB开发网   
核心提示: 这里已经存在第一个问题:当我们声明一个类时,更多的是定义一系列相关的操作(或者叫行为、方法),创建常量、原子性的值类型(2),当然类中也会包含字段和属性,但这些字段通常都是为类的方法所使用,在给Zip属性赋值时是有可能抛出异常的,所以我们还是把它放在一个Try Catch语句中,而属性则常

这里已经存在第一个问题:当我们声明一个类时,更多的是定义一系列相关的操作(或者叫行为、方法),当然类中也会包含字段和属性,但这些字段通常都是为类的方法所使用,而属性则常用于表示类的状态(比如StringBuilder的Length),类的能力(比如StringBuilder的 Capacity),方法进行的状态或者阶段。而定义一个结构时,我们通常仅仅是用它来保存数据,而不提供方法,或者是仅提供对其自身进行操作或者转换的方法,而非对其它类型提供服务的方法。

Address 不包含任何的方法,它仅仅是将Provice、City、Zip这样的三个数据组织起来成为一个独立的个体,所以最好将其声明为一个Struct而非是一个Class。(这里也有例外的情况:如果Address包含二十个或者更多的字段,则考虑将其声明为Class,因为Class在参数传递时是传引用,而Struct是传值。在数据较小的情况下,传值的效率更高一些;而在数据较大的时候,传引用占据更小的内存空间。)

所以我们首先可以将Address声明为一个Struct而非Class。

数据不一致的问题

我们接下来使用一下刚刚创建的Address类型:

Address a = new Address();
a.Province = "陕西";
a.City = "西安";
a.Zip = "710068";
Console.WriteLine(a.ToString()); // Province: 陕西, City: 西安, Zip: 710068

看上去是没有问题的,但是回想下类型的定义,在给Zip属性赋值时是有可能抛出异常的,所以我们还是把它放在一个Try Catch语句中,同时我们给Zip赋一个错误的值,看会发生什么:

try {
    a.City = "青岛";
    a.Zip = "12345";      // 这里触发异常
    a.Province = "山东";
} catch {
}
Console.WriteLine(a.ToString());//Province: 陕西, City: 青岛, Zip: 710068

上一页  1 2 3 4 5  下一页

Tags:创建 常量 原子

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接