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 的类,其中包含两个类常量:Pi 和 SpeedOfLight:
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