• 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

  • 相关阅读:
    PowerDesigner通过SQL文件,反向生成模型
    跨域请求设置
    SSO单点登录与登出
    jwt使用
    git概念理解
    Slf4j MDC机制
    ASP.NET Core依赖注入最佳实践,提示&技巧
    EFCore数据库迁移命令整理
    RSA加密的使用
    CocoaPods 安装的第三方删除
  • 原文地址:https://www.cnblogs.com/melao2006/p/4239318.html
Copyright © 2020-2023  润新知