代码改变世界

c# static 关键字的作用

  钟铧若岩  阅读(4)  评论(0编辑  收藏  举报
在 C# 中,static 关键字具有多种用途,可用于类、字段、方法、属性、构造函数和事件等成员上,下面详细介绍其在不同场景下的作用。

静态类


    • 定义:当 static 关键字用于类时,该类被定义为静态类。静态类不能被实例化,它只能包含静态成员。
    • 作用:静态类通常用于创建工具类,这些类提供一组相关的实用方法,不需要创建实例就能使用。
    • 示例代码
复制代码
public static class MathUtils
{
    public static int Add(int a, int b)
    {
        return a + b;
    }

    public static int Subtract(int a, int b)
    {
        return a - b;
    }
}

class Program
{
    static void Main()
    {
        int result1 = MathUtils.Add(3, 5);
        int result2 = MathUtils.Subtract(10, 4);
        Console.WriteLine($"加法结果: {result1}");
        Console.WriteLine($"减法结果: {result2}");
    }
}
复制代码

静态字段

 

    • 定义:static 关键字用于字段时,该字段属于类本身,而不是类的实例。无论创建多少个类的实例,静态字段都只有一份副本。
    • 作用:静态字段可用于存储类级别的数据,所有实例都可以访问和修改该数据。
    • 示例代码

复制代码
public class Counter
{
    public static int InstanceCount;

    public Counter()
    {
        InstanceCount++;
    }
}

class Program
{
    static void Main()
    {
        Counter c1 = new Counter();
        Counter c2 = new Counter();
        Console.WriteLine($"创建的实例数量: {Counter.InstanceCount}");
    }
}
复制代码

静态方法

 

    • 定义:使用 static 修饰的方法是静态方法,静态方法属于类,而不是类的实例。静态方法只能直接访问静态成员(静态字段、静态方法等),不能直接访问实例成员。
    • 作用:静态方法通常用于实现与类相关的通用功能,不需要依赖于类的实例状态。
    • 示例代码

复制代码
public class Calculator
{
    public static int Multiply(int a, int b)
    {
        return a * b;
    }
}

class Program
{
    static void Main()
    {
        int result = Calculator.Multiply(2, 3);
        Console.WriteLine($"乘法结果: {result}");
    }
}
复制代码

静态属性

 

    • 定义:static 用于属性时,该属性是静态属性,它属于类而不是实例。静态属性可以像静态字段一样存储类级别的数据,并提供对该数据的访问控制。
    • 作用:通过静态属性可以更安全地访问和修改静态字段,同时可以添加额外的逻辑,如验证、计算等。
    • 示例代码

复制代码
public class Settings
{
    private static int _maxConnections;

    public static int MaxConnections
    {
        get { return _maxConnections; }
        set
        {
            if (value > 0)
            {
                _maxConnections = value;
            }
        }
    }
}

class Program
{
    static void Main()
    {
        Settings.MaxConnections = 10;
        Console.WriteLine($"最大连接数: {Settings.MaxConnections}");
    }
}
复制代码

静态构造函数

 

    • 定义:静态构造函数是一种特殊的构造函数,使用 static 关键字修饰,没有访问修饰符,也没有参数。静态构造函数在类被加载时自动执行,且只执行一次。
    • 作用:静态构造函数主要用于初始化类的静态成员,例如为静态字段赋初始值。
    • 示例代码


复制代码
public class DatabaseConfig
{
    public static string ConnectionString;

    static DatabaseConfig()
    {
        ConnectionString = "Server=localhost;Database=MyDB;User=sa;Password=123456";
    }
}

class Program
{
    static void Main()
    {
        Console.WriteLine($"数据库连接字符串: {DatabaseConfig.ConnectionString}");
    }
}
复制代码

静态事件

 

    • 定义:static 用于事件时,该事件是静态事件。静态事件属于类,而不是类的实例,所有实例都可以订阅和触发该事件。
    • 作用:静态事件可用于在类级别进行消息传递,当某个类级别的事件发生时,通知所有订阅者。
    • 示例代码


复制代码
using System;

public class AlarmSystem
{
    public static event EventHandler AlarmTriggered;

    public static void TriggerAlarm()
    {
        AlarmTriggered?.Invoke(null, EventArgs.Empty);
    }
}

class Program
{
    static void Main()
    {
        AlarmSystem.AlarmTriggered += (sender, e) =>
        {
            Console.WriteLine("警报已触发!");
        };

        AlarmSystem.TriggerAlarm();
    }
}
复制代码

综上所述,static 关键字在 C# 中主要用于创建类级别的成员,这些成员不依赖于类的实例,可在不创建实例的情况下直接使用,并且在整个应用程序生命周期中只有一份副本。

相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示