C#静态与非静态

  • 什么是静态和非静态
    有static关键字修饰,静态类、静态成员(字段、属性、方法)
  • 静态类
public  static class  Math//静态类
    {
        public static int a;//静态字段
        public static int MyProperty { get; set; }//静态属性
        public static void Add()//静态方法
    }

注意:静态类不能被实例化,没有构造方法,成员全部为Static

  • 非静态类
定义非静态类
 public   class  Math//非静态类
    {
        public static int a;//静态字段
        public int b;//非静态字段
        public static int MyProperty { get; set; }//静态属性
        public int MyProperty1 { get; set; }//实例属性
        public static void Add()//静态方法       
        public void  AAA()//实例方法       
    }
    使用非静态类
       Math.a = 1;//直接利用类名访问静态成员,不能访问实例成员
       Math math = new Math();
       math.b = 1;//利用对象访问实例成员,不能访问静态

注意:非静态类成员无要求,访问有区别,有构造函数

  • 静态字段和属性
定义静态和非静态字段,属性:
        public static int a;//静态字段
        public int b;//非静态字段
 使用
             Math.a = 1;//直接利用类名访问静态字段或属性
            Math math = new Math();
            math.b = 1;//利用对象访问实例字段或属性

注意:静态用类名,实例用对象

  • 常规做法
    业务相关的类(线路、信号机)Public Class LIne(){ 类成员}
    工具类:Static,方便调用
    对于类中经常需要调用的方法 ,public Static Void Add()(方法体)

  • 原理
    资源的占用,静态类在整个项目中资源共享,只分配一次内存,实例类实例化一个对象需要new出一个内存。
    静态的缺点:占用资源在系统结束时才释放,非静态台有垃圾自动回收机制。

  • 静态成员为公有的内存,不同的对象都用,产生线程安全
    之前的错误:实例对象不能访问静态成员,怎么改动静态成员的值?
    答:对象中的实例方法可以使用静态成员,在方法体中赋值、运算。不同的对象同时操作同一静态成员,会产生线程安全

定义静态和非静态成员
 public   class  Math//静态类  
        public static int a;//静态字段
        public int b;//非静态字段                 
        public void  AAA()//实例方法
        {
            Console.WriteLine("实例字段:{0},静态字段{1}",b++,a++);
        }           
使用成员
            Math math = new Math();
            math.AAA();
            Math math2 = new Math();
            math2.AAA();
 输出
实例字段:0,静态字段0
实例字段:0,静态字段1
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值