经常会遇到一些需要保证常量值不能被外界修改的情况,当然,我们可以通过使用private set;的方式来保证内部成员属性不会被外界修改,但是,如果遇到了多线程的情况,可能还是保证不了常量内部数据值的一致性,下面把常用的三种常量定义方式罗列一下,且越往后的方式越使得常量的原子性更强:

 

    1. 常用的定义方式:

 

 1     public struct Animal
 2     {
 3         public string Name
 4         {
 5             get;
 6             set;
 7         }
 8 
 9         public string Age
10         {
11             get;
12             set;
13         }
14     }

 

    2. 单线程情况下的原子性:

  1    public struct Animal2

 2     {
 3         public string Name
 4         {
 5             get;
 6             private set;
 7         }
 8 
 9         public string Age
10         {
11             get;
12             private set;
13         }
14 
15         public Animal2(string name, string age)
16             : this()
17         {
18             Name = name;
19             Age = age;
20         }
21     }

    3. 多线程情况下的原子性:

  1     public struct Animal3

 2     {
 3         private readonly string _name;
 4         private readonly string _age;
 5 
 6         public string Name
 7         {
 8             get
 9             {
10                 return _name;
11             }
12         }
13 
14         public string Age
15         {
16             get
17             {
18                 return _age;
19             }
20         }
21 
22         public Animal3(string name, string age)
23             : this()
24         {
25             this._name = name;
26             this._age = age;
27         }
28     }

作者: 酸甜西瓜 发表于 2011-08-10 10:17 原文链接

推荐.NET配套的通用数据层ORM框架:CYQ.Data 通用数据层框架