C# 中 静态对象(类、实例、变量、方法)

本文解析了非静态类中静态变量的初始化顺序,以及直接通过类调用静态成员的行为。重点介绍了静态类的特性和使用场景,包括静态构造函数、静态变量和方法的执行顺序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 非静态类中静态变量
    第1种 情况:
             实例化类  TEST a = new TEST(); ,执行顺序为:先声明 或执行 静态的:  静态字段->静态构造函数 ,再非静态的。 静态的只执行一次,
      也就是说再 TEST a1 = new TEST(); 下图的 step 1 、2 、3 、4会 不执行断点。
    public class TEST
        {
            private string Str1 = "notStatic123"; //Step5
            private  string Str2 { get; set; } = "notStatic456"; //Step6
    
            private static string staticStr1  = "static123";  //Step1 
            private static string staticStr2 { get; set; } = "static456";  //Step2
    
            public static string comonStr  = "static456";    //Step3
    
            private static  readonly string readonlyStr;
            public TEST() //Step7
            {
               // readonlyStr = "1"; 可以使用非静态只读字段
                Str1 = "5";
                staticStr2 = "123123";
            }
            static TEST() //Step4
            {
                //静态构造函数不需要修饰符,不能参数
                staticStr1 = "static123000";
                staticStr2 = "static456000";
                //Str1 = "5";//无法使用非静态字段
                readonlyStr = "1"; //可以使用静态只读字段
            }
            public static void FromEmail()
            {
    
            }
            public void FromEmail2()
            {
    
            }
        }

    第2种 情况:
     直接通过类来调用静态方法或者变量:
      若是TEST.FromEmail(),执行顺序,step 1 、2 、3、4执行顺序不变  ,step 5为FromEmail方法;非静态的实例一律不执行。
      若是 TEST.comonStr  执行顺序  step 1 、2 、3、4执行顺序不变

  2.  静态类中的静态对象
    首先静态类中只允许静态构造函数,和静态方法、静态实例变量
    其次 静态类不能实例化
    执行顺序和非静态类的方式类似,先变量,后构造函数,再方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值