C# 中const,readonly,static的使用小结

下面是对于“C#中const,readonly,static的使用小结”的详细讲解。

前言

在C#开发中,我们常常会使用const,readonly和static这三个关键字,它们都可以用来定义变量,但具有不同的作用。

const

const是常量的意思,其特点是在编译时期已经固定下来了,不可改变。

在C#中,const定义的变量必须在声明时初始化,而且只能通过常量表达式来初始化,不能在运行时改变它的值。

常量表达式可以是任意表达式,编译器在编译时就会计算出它的值,因此,const定义的常量可以被看成是编译期间的字面常量。

下面是一个示例:

class Program
{
    static void Main(string[] args)
    {
        const int a = 1;
        //a=2;//编译时会出错,因为const不能修改
        Console.WriteLine("a=" + a);
    }
}

readonly

和const不同的是,readonly定义的变量可以延迟初始化,因此它的初始化可以在构造函数中完成,也可以通过对象初始化器来完成。

另外,和const不同的是,readonly的变量是在运行时确定其值的。

因为readonly变量的值是在运行时确定的,所以可以使用只有运行时才能确定的表达式来初始化它,例如可以使用构造函数中的参数来初始化,还可以根据环境的不同,确定不同的初始化值。

以下是一个示例:

class Program
{
    readonly int a;
    Program()
    {
        a = 1;//通过构造函数初始化变量a
        Console.WriteLine("a=" + a);
    }
    void Test()
    {
        const int b = a;//常量表达式可以使用运行时变量
        Console.WriteLine("b=" + b);
    }
    static void Main(string[] args)
    {
        Program p = new Program();
        p.Test();
    }
}

static

静态变量(static)是指在类中定义的,所有实例共享的变量。

静态变量的生命周期要比实例变量长,它会在整个程序的生命周期内存在,因此,我们可以在任何地方通过类名来访问静态变量,而不需要创建对象。

静态变量的特点是,它可以被多个实例共享,并且在任何实例中对静态变量的修改都会影响所有的实例。

下面是一个示例:

class Program
{
    static int a = 1;//静态变量
    static void Test()
    {
        Console.WriteLine("a=" + a);//直接访问静态变量
    }
    static void Main(string[] args)
    {
        Test();//输出1
        a = 2;//修改静态变量
        Test();//输出2
        Console.ReadKey();
    }
}

总结

以上是C#中const,readonly和static的使用小结。要点如下:

  • const用于定义编译时期的常量,值不可修改。
  • readonly用于定义运行时期的常量,值可以在构造函数中初始化。
  • static用于定义静态变量,被多个实例共享,值可以在任何地方修改。

希望上述内容能对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C# 中const,readonly,static的使用小结 - Python技术站

(0)
上一篇 2023年5月15日
下一篇 2023年5月15日

相关文章

  • C#注释的一些使用方法浅谈

    C#注释的一些使用方法浅谈 简介 注释是一种解释源代码的方法,在C#中,注释可以分为两种类型:单行注释和多行注释。 单行注释 在代码行的后面以双斜杠 // 开头,这一行的内容就被视作注释,注释可以在同一行代码的下方,说明这一行代码的作用。 示例: int a = 1; // 定义变量a,赋值为1 多行注释 多行注释又称块注释,可以用用 /* 和 */ 包围一…

    C# 2023年5月15日
    00
  • ASP.NET Core在Linux下为dotnet创建守护进程

    ASP.NET Core在Linux下为dotnet创建守护进程 在Linux下,可以使用systemd来创建守护进程,以确保ASP.NET Core应用程序在系统启动时自动启动,并在崩溃时自动重启。本攻略将提供一些示例,演示如何在Linux下为dotnet创建守护进程。 步骤 步骤1:创建.NET Core Web API项目 首先,需要创建一个.NET …

    C# 2023年5月17日
    00
  • asp.net c# 调用百度pai实现在线翻译,英文转中文

    要实现asp.net c#调用百度AI实现在线翻译,首先需要获取百度翻译API的访问密钥。然后,通过发送HTTP请求到百度翻译API接口,即可获取到翻译结果。 下面是详细的步骤: 1. 获取百度翻译API访问密钥 访问百度智能云官网,登录或者注册账号 在控制台中创建应用,选择“翻译”作为所需服务。 记录下应用的App ID和API Key 2. 编写C#程序…

    C# 2023年5月31日
    00
  • C#图表算法之无向图

    C#图表算法之无向图 什么是无向图 无向图是图的一种,其中边没有方向。也就是说,图中的节点之间的关系是没有顺序的,就像两个人之间的友谊关系不分先后。 在 C# 中,我们可以使用 Dictionary<T1, List<T2>> 来表示一个无向图。其中 T1 表示节点,T2 表示节点和它相邻的节点组成的列表。 构建无向图 下面是一个构建…

    C# 2023年6月1日
    00
  • C#工程建立后修改工程文件名与命名空间操作

    C#工程的文件名与命名空间是非常重要的,因为它们直接影响了代码的可维护性与可重用性。在建立C#工程时,如果文件名与命名空间不符合要求,需要进行修改。下面是完整的操作攻略。 步骤一:建立工程并修改文件名 使用Visual Studio新建一个C#工程。 右键单击解决方案管理器中的工程节点,选择“重命名”。 输入新的文件名并按下Enter键。 在弹出的对话框中选…

    C# 2023年5月15日
    00
  • c#中单例类与静态类的区别以及使用场景

    C#中单例类与静态类都是常用的设计模式,但是在使用时需要注意它们之间的区别和适用场景。下面将分别对单例类与静态类进行详细讲解。 单例类 单例类是一种只能实例化一个对象的类,通过保证在程序中只有一个实例对象来实现类的控制。单例类通常都由一个私有构造函数、一个静态变量和一个静态工厂方法组成。 单例类主要适用于以下场景: 系统中需要限制对象的数量,并且只需要有一个…

    C# 2023年6月7日
    00
  • C#集合之集(set)的用法

    让我为您详细讲解一下“C#集合之集(set)的用法”。 什么是集(set)? 在C#中,集(set)是一种无序不重复元素的集合。集合是由哈希表实现的,所以集合中的元素是无序的。集合中的每个元素都是唯一的,这意味着同一个元素不会被添加到集合中两次。 集(set)的使用方法 创建集合并添加元素 使用HashSet<T>类可以创建一个集合,并向其中添加…

    C# 2023年6月3日
    00
  • C#实现简单的聊天窗体

    C#实现简单的聊天窗体 1. 确定窗体样式和布局 简单的聊天窗体通常包含一个用于显示聊天记录的文本框,一个用于输入聊天信息的文本框和一个发送按钮。布局可以使用WinForm中自带的TableLayoutPanel或者Panel组件自行进行布局设置。 2. 实现简单的网络通信 为了实现聊天功能,我们需要使用一些网络通信相关的库来帮助我们达成通信的目标,例如.N…

    C# 2023年6月1日
    00
合作推广
合作推广
分享本页
返回顶部