静态变量和非静态变量

静态变量和非静态变量
c里面都是静态的.

c#里对于类里面的任何非静态成员,要用就必须有对象应用。
class   Person
{
      static   string   name;
               int   age;  

               String address;
}
main

        Person zhangsan =   new Person();
        zhangsan.age   = 20;     
        Person.name  =   zhangsan

        // zhangsan
是对象,而Person是类;

}  
   
  

理论部分:
.静态变量和非静态变量的基本概念

  
  
数据成员包括:静态变量和非静态变量两种

   A
静态变量:带有static 修饰符的变量称为静态变量。
   B
非表态变量:不带有static修饰符声明的变量称为实例变量。

. 两者的一些区别
     class test
     {
            static int b=0;        //
静态变量
            int a=0;                 //
非静态变量

     }
     1.
内存分配的区别:静态变量定义时就会存在于内存当中,直到它所在的类的程序运行结束之时它都将一直存在;而非静态变量需要被实例化后才会分配内存,它的存在周期取决于实例化的类的生存周期。

      
所以他们的调用方式也不相同:
      
静态变量:可以(只能)通过类本身.静态变量名,类的实例是不能调用的。

      
非静态变量: 当该变量所在的类被实例化后,可以通过实例化的类名来访问。
       (
另外静态成员不能访问非静态成员;非静态成员可以访问静态成员)
             test.b=2; //OK
             test t=new test();
             t.a=0;      //OK
             t.b=3 ;      //Error
编绎时会出错 无法使用实例引用访问静态成员test.test.b,改用类型名来限定它

     2. 两者值的共享问题: 静态变量被所有类的实例对象共享,即一个实例的改变了静态变量的值,其他同类的实例读到的就是变化后的值。非静态变量是不共享的。
        ex
:下面的最后的输出结果是:10,0
        class Class1
       {
        public static int cs1=0;
        public int cs3=0;
        }
        class Class2
       {
        public void a()
        {
            Console.WriteLine(Class1.cs1.ToString()); //
cs1是静态变量,所以当类Program修改cs1=10后,其它类的实例读到的值就是修改后的值10,所以此处输出的是:10
            Class1 cc = new Class1();
            Console.WriteLine(cc.cs3.ToString()); //
虽然类Program修改值cs3=34;但因cs3//class1类中是非静态变量,它的生存周期于实例化他的类的周期相同,所以当用类名ct实例结束后其
//
值也不会存在于内存当中,当此类用另一个类名cc来实例化后调用变量cs3,其值仍是非静态变量初始//化的值0.
        }
        }
        class Program
       {
         static void Main(string[] args)
        {
            Class1.cs1 = 10;
            Class1 ct = new Class1();
            ct.cs3 = 34;
            Class 2 cm = new Class2();
            cm.a();  
         }
       }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值