美文网首页
8.C# 常量

8.C# 常量

作者: 技术老小子 | 来源:发表于2024-02-20 07:18 被阅读0次

摘要


常量可以当做常规的变量,只是他们的值在定义后不能再被修改,常量可以是任何的基本数据类型,比如整型,浮点型,字符串型,Class等。

正文


为什么使用常量?

像圆周率这样不变的变量,我们就可以使用常量,一般情况下是我们需要一个固定不变的变量时且不希望修改它的值时,就可以使用常量了。

C#中的常量是由3部分组成的,分别是:const、数据类型、常量名:

  • const:是C#中用来定义常量的关键字,不可省略。
  • 数据类型:与定义变量时的数据类型一样,指定一种类型的数据,如整型,字符串等。
  • 常量名:常量名与变量名一样,要遵守标识符的命名规则。
const string NAME = "张三";  

常量在定义时要求必须有值,所以在定义常量时就必须初始化

const 是编译时常量,如果有修改它,或是不初始化,编译都过不去。

const double DISCOUNT = 0.95;
/// <summary>
/// 程序入口
/// </summary>
/// <param name="arg">传入参数</param>
static void Main(string[] arg) //方法入口
{
    int sum = 20;
    double price = 7.5;
    double total=sum*price*discount;
    Console.WriteLine(total);
}

readonly 常量

readonly是一种特殊的常量,也称为动态常量,从字面理解上来看,readonly常量可以进行动态赋值,但需要注意的是,这里的动态赋值是有条件的,它只能在构造函数中进行赋值。

类似const 申明

readonly double DISCOUNT = 0.96;

在构造中初使化它的值

static readonly double DISCOUNT;
/// <summary>
/// 构造函数
/// </summary>
static A()
{
    DISCOUNT = 0.8;
}
/// <summary>
/// 程序入口
/// </summary>
/// <param name="arg">传入参数</param>
static void Main(string[] arg) //方法入口
{
    int sum = 20;
    double price = 7.5;
    double total = sum * price * DISCOUNT;
    Console.WriteLine(total);
}

在这里可以看出readonly的实际用处与const的不同,或是说优点。

class A //类名
{
    readonly double DISCOUNT;
    /// <summary>
    /// 构造函数
    /// </summary>
    A(double discount)
    {
        DISCOUNT = discount;
    }
    /// <summary>
    /// 程序入口
    /// </summary>
    /// <param name="arg">传入参数</param>
    static void Main(string[] arg) //方法入口
    {
        A a1 = new A(0.98);
        Console.WriteLine(a1.DISCOUNT);
        A a2 = new A(0.99);
        Console.WriteLine(a2.DISCOUNT);
    }
}

区别

const常量必须在声明时进行初始化,而readonly常量则可以延迟到构造函数中再进行初始化。

const常量在编译时就被解析,即将常量的值替换成了初始化的值,而readonly常量的值需要在运行时确定。

const常量可以定义在类中或方法中,而readonly常量只能定义在类中。

image.png

相关文章

  • Java(常量的使用与概述)

    常量分类:a>字面值常量 b>自定义常量 A>字面值常量·字符串常量·整数 常量·小数常量·字符常量·布尔常量 ...

  • iOS开发之C语言实用概述

    一、常量和变量:常量的定义:const int a = 10; 常量:整型常量实型常量字符型常量字符串常量 变量:...

  • Java基础语法之常量

    1.Java中常量分类 字面值常量 自定义常量 2.字面值常量的分类 字符串常量 整数常量 小数常量 字符常量 布...

  • java基础

    1. 常量 字符串常量 整数常量 小数常量 字符常量:单个数字,单个字母,单个符号 布尔常量 空常量 2. ...

  • 常量

    -静态常量-成员常量-局部常量

  • Java常量和C#常量

    常量是固定值,程序执行期间不会改变。常量可以是整数常量、浮点常量、字符常量或者字符串常量,还有枚举常量。 1. 定...

  • Swift初识-常量、变量

    1、定义一个常量、变量 常量 格式:let 常量名:常量类型 = 常量值 let name:String = "张...

  • 常量与变量

    常量 定义:程序中固定不变化的值 常量分类 字面值常量 整数常量 1,2,3 小数常量3.14 布尔常量false...

  • JavaScript-3变量、常量、关键字

    JavaScript的常量 什么是常量常量:表示一些固定不变的数据。 JavaScript常量分类2.1 整形常量...

  • C语言数据与数据类型相关概念整理

    数据四类:常量 变量 表达式 函数常量四类:整型常量 实型常量 字符型常量 字符串常量 1.整型常量 三种形式(十...

网友评论

      本文标题:8.C# 常量

      本文链接:https://www.haomeiwen.com/subject/omhbadtx.html