将不确定变为确定~static被翻译成静态,你是否赞同

回到目录

C#中有一个修饰符,它叫static,国人把它叫静态化的,它可以去修饰类,方法,属性,事件等元素。

在100%的教科书中把static叫做静态的,对于原本就很抽象的编程语言来说,无疑使它更加抽象化了,啥是静态,静止不动?有点意思。

先看一个static的应用场合代码片断:

一 静态类:它在程序初始化时自动被执行

1 public static class ConnectionFactory
2  {...}

二 静态方法和静态属性:它在类被第一次使用或第一次被实例化时,被执行

1 public static string Conn=WebConfig.SQLConn;
2 public static DataContext Instance()
3 {...}

三 静态事件,它与静态属性和方法一样的执行机制

1 public static event StartEventHandler Start;

事实上,以上三点是书本上经常介绍的,但我不认为它是一种学习static的最好方式,看一下我对static的理解:

 它是类本身的东西,与实例无关,即类的属性,类的方法,类的事件等等,它与实例无关,也就是实例A与实例B,对于public static修饰符下的属性,方法,事件是平等的,同时也是共享的。

如果在一个类型B中对StaticA类中的静态属性Num赋值,它会对所有类中使用Num属性的位置进行修改(事实上,在内在中,它只是一个地址),你的代码可能是这样:

 1     /// <summary>
 2     /// 测试类
 3     /// </summary>
 4     public class StaticA
 5     {
 6         /// <summary>
 7         /// 静态属性
 8         /// </summary>
 9         public static string Num = "类的属性";
10     }

在其它类中,有对Num属性的使用:

1  public class A
2     {
3         public string ANum = StaticA.Num;
4     }
5     public class B
6     {
7         public string BNum = StaticA.Num;
8     }

而当我们在程序的任何一处修改Num的值时,以上A和B中的实例属性ANum和BNum也就会发生变化了,呵呵。

看一下,由static实现的单件模式吧(类只能有一个实例)

 1  public sealed class Singleton
 2     {
 3         // 静态,易变的对象
 4         private static volatile Singleton instance = null;
 5         // Lock对象,线程安全所用
 6         private static object syncRoot = new Object();
 7 
 8         private Singleton() { }
 9 
10         public static Singleton Instance
11         {
12             get
13             {
14                 if (instance == null)
15                 {
16                     lock (syncRoot)
17                     {
18                         if (instance == null)
19                             instance = new Singleton();
20                     }
21                 }
22 
23                 return instance;
24             }
25         }
26     }

 

总结一下static的技术要点:

1 static与具体实例无法,属性类本身的东西,而不加static是与当前实例(new ())有关的个性化对象

2 static叫它静态对象不如叫它全局对象或类自身对象

3 static有时可以提高系统性能,即,在为对象开辟一块内存空间

回到目录

posted @ 2012-06-09 15:25  张占岭  阅读(1738)  评论(2编辑  收藏  举报