文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>C#中静态方法和实例方法的使用

C#中静态方法和实例方法的使用

时间:2011-02-22  来源:破碎了无痕

1. 静态方法不会阻塞并发请求,以前一直有种感觉觉得静态方法是不是在同一时间点只能有一个线程调用,经测试这纯属幻觉!

 

        static void Main(string[] args)
        {

            Thread t1 = new Thread(new ThreadStart(StaticMethod));
            Thread t2 = new Thread(new ThreadStart(StaticMethod));
            t1.Name = "t1";
            t2.Name = "t2";
            t1.Start();
            t2.Start();

            Console.Read();
        }

        public static void StaticMethod()
        {
            Console.WriteLine(Thread.CurrentThread.Name + " -> StaticMethod starting...");
            Thread.Sleep(2000);
            Console.WriteLine(Thread.CurrentThread.Name + " -> StaticMethod ending...");
        }


2. 静态方法并不存在常驻内存,性能高等特点。方法跟属性不一样,方法在调用时都需要从代码区域获取一份本方法的代码去执行,在这一点上静态和非静态方法没有本质区别。在AppDomain加载程序集时,代码被放到特定的只读区域,不存在静态非静态之分。

3. 静态方法不能访问实例的方法,属性等,但实例方法则无此限制。同时需注意在多线程编程中,任何方法(包括静态和非静态)对本方法外定义的属性,变量等的访问和修改需谨慎,因为这可能导致线程安全问题。

4. 静态方法不能被继承,重写,因为static修饰符不能跟virtual, abstract, override等共存,因此在一些面向对象的设计中要谨慎使用,它在一定程度上的确会破坏面向对象设计OO特性,诸如继承,多态等。 但对于一些功能相对独立,不需要跟其它对象有很多调用,又不需要经常修改的方法,可以使用静态方法,静态方法在调用时相对简单明了。

 

参考:http://www.cnblogs.com/ivony/archive/2006/06/30/439377.html

   http://www.cnblogs.com/mikelij/archive/2010/08/13/1798578.html    http://www.rainsts.net/article.asp?id=261
 
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载