zoukankan      html  css  js  c++  java
  • C#静态成员和非静态成员

    一、C#静态成员和非静态成员

    1. C#静态成员和非静态成员

    当类中的某个成员使用static修饰符时,就会被声明为静态成员。类中的成员要么是静态成员,要么是非静态成员。一般情况下,静态成员属于整个类所有,被该类的所有实例所共享。而非静态成员则属于类的实例——对象所有,只被该实例所共享。

    因此,对于类的静态成员来说,无论这个类创建了多少个副本(实例),一个静态成员只占一块内存区域,而不会重复创建多个副本。同一静态成员在不同的实例中的值是相同的。

    在静态函数中不能使用非静态成员,如非静态变量、非静态函数等。

    而对于类的非静态成员来说,每创建一个类的实例,都会在内存中为非静态成员开辟一块区域,创建多少实例,就会开辟多少块区域。同一非静态成员在不同的实例中的值可能是不同的。

    所以,静态成员占用的内存区域最少。

    2. 访问静态成员的方式

    可以通过“类名+圆点(.)+成员名”的方式来访问静态成员,不需要创建类的实例。

    二、示例
     
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;

    namespace Test
    {
        class Program
        {
            class classTest
            {
                public static String staticStr = "class";  // 静态成员
                public String notstaticStr = "obj";        // 非静态成员
            }
            static void Main(string[] args)
            {
                // C#静态成员和非静态成员-www.baike369.com
                // 静态变量通过类进行访问,该类所有实例的同一静态变量都是同一个值
                Console.WriteLine("classTest's staticStr:{0}", classTest.staticStr);
                classTest obj1 = new classTest();
                obj1.notstaticStr = "obj1";
                classTest obj2 = new classTest();
                obj2.notstaticStr = "obj2";
                // 非静态变量通过实例(对象)进行访问,不同实例(对象)的同一非静态
                // 变量可以有不同的值
                Console.WriteLine("obj1's notstaticStr:{0}", obj1.notstaticStr);
                Console.WriteLine("obj2's notstaticStr:{0}", obj2.notstaticStr);
                Console.ReadLine();
            }
        }
    }

    运行结果:
      
    classTest's staticStr:class
    obj1's notstaticStr:obj1
    obj2's notstaticStr:obj2

  • 相关阅读:
    java数据结构之队列
    java数据结构之线性表
    habase 报错 ERROR: Can't get master address from ZooKeeper; znode data == null
    java.io.IOException: Could not find status of job:job_1534233312603_0002
    windows本地调试安装hadoop(idea) : ERROR util.Shell: Failed to locate the winutils binary in the hadoop binary path
    搭建hadoop_之 创建3个虚拟机配置好网络
    java 数组
    java 中break 和continue 的非常规用法
    java运算符
    java数据类型
  • 原文地址:https://www.cnblogs.com/melao2006/p/4239318.html
Copyright © 2011-2022 走看看