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垃圾回收器)释放资源

  • 相关阅读:
    RUST实践.md
    redis.md
    opencvrust.md
    aws rds can't connect to mysql server on 'xx'
    Foundation ActionScript 3.0 With Flash CS3 And Flex
    Foundation Flash Applications for Mobile Devices
    Flash Mobile Developing Android and iOS Applications
    Flash Game Development by Example
    Actionscript 3.0 迁移指南
    在SWT中非UI线程控制界面
  • 原文地址:https://www.cnblogs.com/ImOrange/p/10534102.html
Copyright © 2011-2022 走看看