C# - 常量和字面量

常量指的是程序在执行过程中无法更改的固定值。这些固定值也称为字面量。常量可以是任何基本数据类型,例如整型常量、浮点型常量、字符型常量或字符串字面量。此外,还有枚举常量。

常量与常规变量类似,只是它们的值在定义后无法修改。

整型字面量

整型字面量可以是十进制或十六进制常量。前缀指定基数:十六进制为 0x 或 0X,十进制没有前缀 id。

整型字面量还可以带有后缀 U 和 L,分别表示无符号和长整型。后缀可以是大写或小写,顺序不限。

示例

以下是一些整数文字的示例 -

212 	/* 合法 */
215u 	/* 合法 */
0xFeeL 	/* 合法 */

以下是其他各种类型的整数文字的示例 -

85 		/* 十进制 */
0x4b 	/* 十六进制 */
30 		/* 整数 */
30u 	/* 无符号整数 */
30l 	/* 长整型 */
30ul 	/* 无符号长整型 */

浮点字面量

浮点字面量包含整数部分、小数点、小数部分和指数部分。浮点字面量可以用十进制或指数形式表示。

示例

以下是一些浮点字面量的示例 -

3.14159 		/* 合法 */
314159E-5F 		/* 合法 */
510E 			/* 非法:指数不完整 */
210f 			/* 非法:无小数或指数 */
.e55 			/* 非法:缺少整数或分数 */

以十进制形式表示时,必须包含小数点、指数或两者;以指数形式表示时,必须包含整数部分、小数部分或两者。有符号指数由 e 或 E 引入。

字符常量

字符字面量用单引号括起来。例如,"x"可以存储在 char 类型的简单变量中。字符字面量可以是普通字符(例如 'x')、转义序列(例如 ' ')或通用字符(例如 '\u02C0')。

C# 中,某些字符前面带有反斜杠。它们具有特殊含义,用于表示换行符 ( ) 或制表符 ( )。以下列出了一些此类转义序列代码 -

转义序列 含义
\ \ 字符
\' ' 字符
\" " 字符
\? ? 字符
\a 提醒或铃声
\b 退格键
\f 换页符
换行符
回车键
水平制表符
\v 垂直制表符
\xhh . . . 一位或多位十六进制数

示例

以下示例展示了几个转义序列字符 -

using System;
namespace EscapeChar {
   class Program {
      static void Main(string[] args) {
         Console.WriteLine("Hello	World");
         Console.ReadLine();
      }
   }
}

当编译并执行上述代码时,它会产生以下结果 -

Hello   World

字符串字面量

字符串字面量或常量用双引号 "" 或 @"" 括起来。字符串包含与字符字面量类似的字符:普通字符、转义序列和通用字符。

您可以使用字符串字面量将长行拆分成多行,并使用空格分隔各部分。

示例

以下是一些字符串字面量的示例。这三种形式都是相同的字符串。

"hello, dear"
"hello, \
dear"
"hello, " "d" "ear"
@"hello dear"

定义常量

常量使用 const 关键字定义。定义常量的语法为:-

const <data_type> <constant_name> = value;

访问常量

只要常量在作用域内,就可以使用其名称访问常量。

以下是在 C# 中访问常量的语法:

//当常量位于局部作用域时
constant_name

//当常量位于类中时
class_name.constant_name

类常量

类常量在类内部使用 const 关键字声明。它们是隐式静态的,这意味着它们属于类而不是实例。

可以使用类名访问类常量。

语法

您可以使用以下语法定义类常量:

class ClassName
{
    public const datatype ConstantName = value;
}

示例

在下面的示例中,我们定义了一个名为 MathConstants 的类,其中包含两个类常量:PiSpeedOfLight:

using System;

class MathConstants
{
    public const double Pi = 3.14159;
    public const int SpeedOfLight = 299792458;
}

class Program
{
    static void Main()
    {
        Console.WriteLine("Value of Pi: " + MathConstants.Pi);
        Console.WriteLine("Speed of Light: " + MathConstants.SpeedOfLight);
    }
}

当编译并执行上述代码时,它会产生以下结果 -

Value of Pi: 3.14159
Speed of Light: 299792458

更多关于常量和字面量的示例

以下是如何在 C# 中声明和访问不同类型的常量和字面量的示例:

示例 1

以下程序演示了如何在 C# sharp 程序中定义和使用常量 -

using System;
namespace DeclaringConstants {
   class Program {
      static void Main(string[] args) {
         const double pi = 3.14159;   
            
         // 常量声明
         double r;
         Console.WriteLine("Enter Radius: ");
         r = Convert.ToDouble(Console.ReadLine());
            
         double areaCircle = pi * r * r;
         Console.WriteLine("Radius: {0}, Area: {1}", r, areaCircle);
         Console.ReadLine();
      }
   }
}

当编译并执行上述代码时,它会产生以下结果 -

Enter Radius: 
3
Radius: 3, Area: 28.27431

示例 2

下面的示例在单个 C# 代码中演示了字符串字面量和浮点字面量 -

using System;
class Example {
   static void Main() {
      // 字符串文字
      string regularString = "Hello, World!";
      string verbatimString = @"C:\Users\Admin\Documents\";
      
      Console.WriteLine("Regular String Literal: " + regularString);
      Console.WriteLine("Verbatim String Literal: " + verbatimString);
   
      // 浮点文字
      float floatLiteral = 3.14F;
      // 默认浮点类型
      double doubleLiteral = 3.14159265359;
      // 需要"M"后缀以实现高精度
      decimal decimalLiteral = 3.14159265359M;
      
      Console.WriteLine("Floating Point Literals:");
      Console.WriteLine("Float Literal: " + floatLiteral);
      Console.WriteLine("Double Literal: " + doubleLiteral);
      Console.WriteLine("Decimal Literal: " + decimalLiteral);
   }
}

以下是上述代码的输出 -

Regular String Literal: Hello, World!
Verbatim String Literal: C:\Users\Admin\Documents\

Floating Point Literals:
Float Literal: 3.14
Double Literal: 3.14159265359
Decimal Literal: 3.14159265359