Welcome

首页 / 软件开发 / C# / c#:创建常量、原子性的值类型

c#:创建常量、原子性的值类型2011-08-10 tracefact.net 张子阳概述

本文是《Effective C#》一书第七节的读书笔记。通过这篇文章,我主要想向大家说明一个我们平时 可能不太会注意到的问题:创建具有常量性和原子性的值类型。

从类型设计谈起

从Class到Struct

假如我们要设计一个存储收信人地址的类型(Type), 我们管这个类型叫 Address。它应该包含这样几 个属性:

Province 省

City 市

Zip 邮编

要求对Zip的格式进行控制(必须全为数字,且为6位),大家该如何设计呢?我想很多人会写成这样吧 :

public class Address {
private string province;
private string city;
private string zip;

public string Province {
get { return province; }
set { province = value; }
}

public string City {
get { return city; }
set { city = value; }
}

public string Zip {
get { return zip; }
set {
CheckZip(value); // 验证格式
zip = value;
}
}

// 检测是不是正确的 zip
private void CheckZip(string value) {
string pattern = @"d{6}";
if(!Regex.IsMatch(value, pattern))
throw new Exception("Zip is invalid! ");
}
public override string ToString() {
return String.Format("Province: {0}, City: {1}, Zip: {2}", province, city, zip);
}
}