C#关于静态关键词static详解

Demo代码:

csharp 复制代码
public class HomeController : Controller
{
    private DateTime time1 = DateTime.Now;  // 实例字段
    private static DateTime time2 = DateTime.Now;  // 静态字段

    [HttpGet("index")]
    public async Task Index()
    {
        Console.WriteLine($"now:{DateTime.Now}");
        Console.WriteLine($"time1:{time1}");
        Console.WriteLine($"time2:{time2}");
    }
}

第一次请求结果:

复制代码
now:2025/2/14 17:00:58
time1:2025/2/14 17:00:57
time2:2025/2/14 17:00:58

第二次请求结果:

复制代码
now:2025/2/14 17:01:08
time1:2025/2/14 17:01:07
time2:2025/2/14 17:00:58

总结实例字段 time1 的行为:

  • 第一次请求time1 在每次请求时都会重新初始化,因此它的值是第一次请求发生时的时间。假设第一次请求发生时,time1 的值为 2025/2/14 17:00:57

  • 第二次请求time1 作为实例字段,会在每次请求时重新初始化,因此它的值是第二次请求发生时的时间。假设第二次请求发生时,time1 的值为 2025/2/14 17:01:07

总结静态字段 time2 的行为:

  1. 第一次请求time2 在类加载时初始化,值为 2025/2/14 17:00:58,并且第一次请求时打印这个值。
  2. 第二次请求time2 的值保持不变,仍然是类加载时的值 2025/2/14 17:00:58。因为静态字段在类加载后不再改变,所有请求都会使用同一个 time2 值。

总结:

time2 是静态字段,因此在第一次请求和第二次请求中,它的值不变。而 time1 是实例字段,每次请求都会重新初始化,因此它在第二次请求时打印新的时间。

相关推荐
缺点内向1 小时前
C#: 告别繁琐!轻松移除Word文档中的文本与图片水印
c#·自动化·word·.net
喵叔哟2 小时前
06-ASPNETCore-WebAPI开发
服务器·后端·c#
2501_930707782 小时前
使用 C# .NET 从 PowerPoint 演示文稿中提取背景图片
c#·powerpoint·.net
初级代码游戏2 小时前
套路化编程 C# winform 自适应缩放布局
开发语言·c#·winform·自动布局·自动缩放
大空大地20264 小时前
流程控制语句--switch多分支语句使用、while循环语句的使用、do...while语句、for循环
c#
kylezhao20195 小时前
C#序列化与反序列化详细讲解与应用
c#
JQLvopkk5 小时前
C# 实践AI :Visual Studio + VSCode 组合方案
人工智能·c#·visual studio
故事不长丨6 小时前
C#线程同步:lock、Monitor、Mutex原理+用法+实战全解析
开发语言·算法·c#
kingwebo'sZone6 小时前
C#使用Aspose.Words把 word转成图片
前端·c#·word
大空大地20266 小时前
表达式与运算符
c#