zoukankan      html  css  js  c++  java
  • 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垃圾回收器)释放资源

  • 相关阅读:
    TYVJ1061 Mobile Service
    TYVJ1061 Mobile Service
    KMP 模板
    poj 3254 Corn Field
    poj 3254 Corn Field
    洛谷1279 字串距离
    poj 1041 John's trip——欧拉回路字典序输出
    bzoj 3033 太鼓达人——欧拉图搜索
    bzoj 2503 相框——思路
    bzoj 2935 [Poi1999]原始生物——欧拉回路思路!
  • 原文地址:https://www.cnblogs.com/ImOrange/p/10534102.html
Copyright © 2011-2022 走看看