博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
深入理解C#的中static
阅读量:4128 次
发布时间:2019-05-25

本文共 1070 字,大约阅读时间需要 3 分钟。

深入理解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#的区别。

转载地址:http://xmzvi.baihongyu.com/

你可能感兴趣的文章
浅谈HTML
查看>>
css基础
查看>>
Servlet进阶和JSP基础
查看>>
servlet中的cookie和session
查看>>
过滤器及JSP九大隐式对象
查看>>
软件(项目)的分层
查看>>
菜单树
查看>>
Servlet的生命周期
查看>>
JAVA八大经典书籍,你看过几本?
查看>>
《读书笔记》—–书单推荐
查看>>
JAVA数据类型
查看>>
【Python】学习笔记——-6.2、使用第三方模块
查看>>
【Python】学习笔记——-7.0、面向对象编程
查看>>
【Python】学习笔记——-7.2、访问限制
查看>>
【Python】学习笔记——-7.3、继承和多态
查看>>
【Python】学习笔记——-7.5、实例属性和类属性
查看>>
git中文安装教程
查看>>
虚拟机 CentOS7/RedHat7/OracleLinux7 配置静态IP地址 Ping 物理机和互联网
查看>>
Jackson Tree Model Example
查看>>
常用js收集
查看>>