C#-静态与非静态的区别

静态和非静态的区别
1、在非静态类中,既可以有实例成员,也可以有静态成员。如下代码:

class Person
    {
       private static  string _name;
        private char _gender;
        
        public void M1()
        {
            Console.WriteLine("//我是非静态方法");
        }
        public static void M2()
        {
            Console.WriteLine(" //我是一个静态方法");
        }
    }

2、在调用实例成员的时候,需要使用对象名.实例成员;在调用静态成员的时候,需要使用类名.静态成员名。如下代码:

static void Main(string[] args)
        {
            //调用实例成员
            Person P = new Person();//实例化
            P.M1();//实例方法
            Person.M2();//静态方法
            Console.WriteLine();
            Console.ReadKey();
        }

总结

1)静态成员必须使用类名去调用,而实例成员使用对象名调用。如下代码:

 Person P = new Person();//实例化
 P.M1();//实例方法
 Person.M2();//静态方法

2)静态函数中,只能访问静态成员,不允许访问实例成员。如下代码:

 class Person
    {
        private static  string _name;
        private char _gender;
        public static void M2()
        {
            _name = "jingtai";
            _gender = 'f';//此行报错,不能引用非静态字段
            Console.WriteLine(" 我是一个静态方法");
        }
    }

 

3)实例函数中,既可以使用静态成员,也可以使用实例成员。如下代码:

 class Person
    {
        private static  string _name;
        private char _gender;
        public void M1()
        {
            _name = "feijingtai";
            _gender = 'm';
            Console.WriteLine("我是非静态方法");
        }
        
    }

 

4)静态类中只允许有静态成员,不允许出现实例成员。否则会报错,如下代码:

static class Person
    {
        private static  string _name;
        //注释掉的部分代码会报错(不能在静态类中声明实例成员)
        //private char _gender;
        //public void M1()
        //{
        //Console.WriteLine("我是非静态方法");
        //}
        public static void M2()
        {
            Console.WriteLine(" 我是一个静态方法");
        }
    }

 

使用:
1)、如果你想要你的类当做一个"工具类"去使用,这个时候可以考虑将类写成静态的。(工具类的意思就是,像工具一样经常需要用到的类,比如:console类,经常需要用来在控制台输入输出)
2)、静态类在整个项目中,谁都可以调用静态类,所以静态类在整个项目中是资源共享。

 

拓展内容:

内存五大块中的三大块:堆, 栈, 静态存储区域

只有在程序全部结束之后,静态类才会释放资源。通过(GC Garbage Collection垃圾回收器)释放资源

转载于:https://www.cnblogs.com/ImOrange/p/10534102.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值