深入理解C#的中static

深入理解Java和C#中static

顾名思义,static是静态的含义。一个静态的方法,只能调用静态成员。
static还有一个作用,就是“所有对象共享”。
下面的代码反映了在C#中对static变量的调用以及static变量的共享情况。

using System;

namespace staticTest
{
 public class stu
 {
  public static int x = 0;  //所有对象共享
  public int y = 0;  //所有对象独立
  public stu(){
   x ++;
   y ++;
  }
 }
 
    public class Program
 {
  public static void Main(string[] args)
  {
   Console.WriteLine("Hello World!");
   
   Console.WriteLine(stu.x);
   
   stu s1 = new stu();
   Console.WriteLine(stu.x);
   stu s2 = new stu();
   Console.WriteLine("s1 = " + stu.x);
   Console.WriteLine("s1 = " + s1.y);
   Console.WriteLine("s2 = " + stu.x);
   Console.WriteLine("s2 = " + s2.y);
   
   
   // TODO: Implement Functionality Here
   
   
   Console.Write("Press any key to continue . . . ");
   Console.ReadKey(true);
  }
 }
}

输出结果:
Hello World!
0
1
s1=2
s1=1
s2=2
s2=1

在这里,有些地方是要注意和值得深究的:
1.访问stu类中静态成员x只能使用stu.x,而不能实例化stu。
2.在面向对象中,声明和定义是不同的,声明并不分配内存区域,但是定义就会在内存中开辟一片区域存

放该变量。
当我们定义s1:stu s1 = new stu();
这时候,已经在内存中开辟了stu这样对象的空间了,在这个空间中,x是存放在公共区域中,当我们再次

定义一个stu对象s2:stu s2 = new stu(); 时,公共空间的x值会在原来基础上加i1
但是y是s2自己空间里的,结果自然是1.
3.我们要想访问s1的x,方法只能使用stu.x,而不能使用s1.x,这个是Java和C#的区别。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值