黑马程序员技术交流社区

标题: static [打印本页]

作者: liucaifu    时间: 2011-11-4 11:50
标题: static
在C#中引入static的目的是什么,在开发过程中我很少看到用static,那么什么情况下用static?
作者: 周大俊    时间: 2011-11-4 12:39
静态:修饰变量的时候表示变量是不可改变的,程序运行结束才收回内存空间;修饰类的时候表示可以不用实例化而直接使用的类。

作者: 郑文    时间: 2011-11-4 13:34
一般staic修饰类的时候 放一些共有的方法,充当工具的作用。还有一些共有的属性等,如在config文件中取得的链接字符串,可以用static修饰,以便其他连接能使用
作者: 李荣壮    时间: 2011-11-4 14:12
用的不多吗,我怎么感觉用的挺多的

static修饰符可以把变量、方法之类的设置为静态

所谓静态就是不用NEW一个实例出来,就可以直接使用了
  1. //实例类的使用
  2. public class Person
  3. {
  4.     public void SayHello()
  5.     {
  6.         // some code
  7.      }
  8. }
  9. Person person1=new Person();
  10. person1.SayHello();
  11. //静态类的使用
  12. public static class Person

  13.     public static void SayHello()
  14.     {
  15.         // some code
  16.     }

  17. Person.SayHello();
复制代码
最觉的静态方法就是 ,Main(),哈哈,每天见无数次,这个必须静态了,要不然怎么用啊
作者: 小石    时间: 2011-11-4 14:20
连接数据库的时候 写一些公有的方法 挺好用的
作者: 朱勋    时间: 2011-11-4 14:55
C#中有静态类,可以直接调用其中的方法,实现共享机制
作者: 黄朝辉    时间: 2011-11-4 16:26
本帖最后由 黄朝辉 于 2011-11-4 16:30 编辑

静态类:里面都是静态属性和方法等都是静态
普通类:静态构造函数优先于普通构造函数、但只用到一次,也就是第一次用到对象的时候,不管你调用的是什么。
注意:静态构造函数必须是无参而且是无修饰符,可以和一般的构造函数共存
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.IO;
  6. using System.Data;
  7. using System.Data.SqlClient;
  8. using System.Text.RegularExpressions;
  9. using System.Collections;
  10. using System.Reflection;

  11. namespace ConsoleApplication
  12. {
  13.     class Program
  14.     {
  15.         static void Main(string[] args)
  16.         {
  17.             PuTongLei.P2();
  18.             PuTongLei p1 = new PuTongLei();
  19.         }
  20.     }
  21.     public static class JingTaiLei
  22.     {
  23.         public static void J1()
  24.         {
  25.             Console.WriteLine("我是静态类里面的静态方法");
  26.         }
  27.         public static int J2
  28.         {
  29.             get;set;
  30.         }
  31.         static JingTaiLei()
  32.         {
  33.             Console.WriteLine("我是静态类的构造函数");
  34.         }
  35.     }

  36.     public class PuTongLei
  37.     {
  38.         public PuTongLei()
  39.         {
  40.             Console.WriteLine("我是普通构造函数");
  41.         }
  42.         static PuTongLei()
  43.         {
  44.             Console.WriteLine("我是静态构造函数");
  45.         }
  46.         public void P1()
  47.         {
  48.             Console.WriteLine("我是普通类里面的方法");
  49.         }
  50.         public static void P2()
  51.         {
  52.             Console.WriteLine("我是普通类里面的静态方法");
  53.         }
  54.     }
  55. }
复制代码

作者: 夏雪锐    时间: 2011-11-4 19:40
你知道C#的程序入口点是怎样的吗?-----就是static Main方法!由此可以得出static变量,方法不用new出来就可以用!君不见Math类里有Cos,Sin等像工具一样的方法吗?直接类.方法名,直接类.属性就可以用了。
另个多说一点静态类
无论对象发生什么更改,这些数据和函数都不会随之变化。当类中没有依赖对象标识的数据或行为时,就可以使用静态类。
1仅包含静态成员。

2不能被实例化。

3密封的,也就是说不能被继承

4不能包含实例构造函数

写个小例子:

    class StaticTest
    {
        public static int i = 0;//静态的i
    }
    class StaticClassTest
    {
        public void AddI()
        {
            StaticTest.i++;
        }

        static void Main(string[] args)
        {
            new StaticClassTest().AddI();
            new StaticClassTest().AddI();
            new StaticClassTest().AddI();

            Console.WriteLine(StaticTest.i);//这时i就变成3了
        }
    }
作者: 宋天琪    时间: 2011-11-5 09:32
第一当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。
static的第二个作用是保持变量内容的持久。
static的第三个作用是默认初始化为0。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2