A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 肖云 中级黑马   /  2012-6-7 12:15  /  3161 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

一个变量定义在方法外,类的里面,前面为什么一定要加static,才能让本内中所有方法都访问到. 如:static int a=3;

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

10 个回复

正序浏览
static不是全局变量,是静态变量,不用加也可以,在类中使用static 修饰的属性 不需实例化可以直接使用

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
        C#中的static
      使用 static修饰符声明属于类型本身而不是属于特定对象的静态成员。static修饰符可用于类、字段、方法、属性、运算符、事件和构造函数,但不能用于索引器、析构函数或类以外的类型。例如,下面的类声明为 static,并且只包含 static方法。
  例如:
  static class CompanyEmployee
  {
  public static string GetCompanyName(string name) { ... }
  public static string GetCompanyAddress(string address) { ... }
  }
  一般来说,类中标注了static的函数与变量能在类外直接引用,比如说:
  String M_string1 =CompanyEmployee.GetCompanyName(M_string2)
  而没有标注static的函数则必须声明一个类的实体,,有实体来引用。比如说:
  static class CompanyEmployee
  {
  public string GetCompanyName(string name) { ... } //没有Static
  public static string GetCompanyAddress(string address) { ... }
  }
  CompanyEmployee M_CompE = new CompanyEmployee()
  String M_string1 =M_CompE.GetCompanyName(M_string2)

评分

参与人数 1技术分 +2 收起 理由
宋天琪 + 2

查看全部评分

回复 使用道具 举报
好像有一部分因素是,静态方法不能直接使用非静态变量,所以如果不定为static的全局变量有的静态方法就需要实例化这个类的对象才能使用此对象。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
static 修饰的属性或者方法,属于静态的类成员,不是实例成员,不用生成某一个具体的实例就可以通过类名来调用它。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
静态变量或者可以使说是全局变量,还有静态方法,静态类
当用到静态类的时候,不用实例化,直接由(类名.方法名或者属性)

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
static是静态的,是类级别的成员,而不是对象级别的成员,你创建的对象是不能使用它的,只能由类来调用它。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 朱亮辉 于 2012-6-7 13:37 编辑

static int a=3; 你不加static 也是可以的啊,只要你定义的变量是全局变量!

另外给出static详细解释

1、使用static修饰的方法,可以直接用类访问
2、没有使用static修饰的方法,只能通过对象访问(类的实例)
3、static修饰的方法不能被重写,不用static修饰的方法就可以被重写。

    class Program
    {
        static void Main(string[] args)
        {
            //Test1方法只能先实例化一个对象,通过对象t来访问(不用static修饰的方法)
            Test t = new Test();
            t.Test1();

            //使用static修饰的方法可以直接通过类访问方法
            Test.Test2();

        }



    }

    public class Test
    {
        //不带static的方法
        public void Test1()
        {

        }

        //带有static的方法
        public static void Test2()
        {

        }
    }

评分

参与人数 1技术分 +2 收起 理由
宋天琪 + 2

查看全部评分

回复 使用道具 举报
static修饰符修饰的属性、方法是属于类的,非static属性、方法属于对象,也就是说属于类的方法、属性不需要实例化(即不产生对象)就可以访问,而非static属性的方法、属性必须在实例化(即产生对象)后才能使用。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
再补一点,如果方法和变量都处于同一个类中,不用static是可以访问的。
回复 使用道具 举报
static代表全局变量啊

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马