C# 常量怎么定义和使用?

文章导读
上一个 测验 下一个 常量指的是程序在执行期间不可更改的固定值。这些固定值也称为字面量。常量可以是任何基本数据类型,如 integer constant、floating constant、character constant 或 string literal。还有枚举常量
📋 目录
  1. Integer Literals
  2. Floating-point Literals
  3. Character Constants
  4. String Literals
  5. 定义常量
  6. 访问常量
  7. 类常量
  8. 更多关于常量和字面量的示例
A A

C# - 常量和字面量



上一个
测验
下一个

常量指的是程序在执行期间不可更改的固定值。这些固定值也称为字面量。常量可以是任何基本数据类型,如 integer constant、floating constant、character constant 或 string literal。还有枚举常量。

常量在处理上与普通变量相同,只是定义后其值不可修改。

Integer Literals

Integer literal 可以是十进制或十六进制常量。前缀指定基数或进制:0x 或 0X 表示十六进制,十进制则无前缀。

Integer literal 还可以带有后缀,由 U 和 L 组合而成,分别表示 unsigned 和 long。后缀可以是大写或小写,且顺序任意。

示例

以下是一些 integer literals 的示例 −

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

以下是各种类型 Integer literals 的其他示例 −

85         /* 十进制 */
0x4b       /* 十六进制 */
30         /* int */
30u        /* unsigned int */
30l        /* long */
30ul       /* unsigned long */

Floating-point Literals

Floating-point literal 包含整数部分、小数点、分数部分和指数部分。您可以用十进制形式或指数形式表示 floating point literals。

示例

以下是一些 floating-point literals 的示例 −

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

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

Character Constants

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

C# 中某些字符前面加反斜杠时具有特殊含义,用于表示如换行符 (\n) 或制表符 (\t)。以下是一些此类转义序列代码的列表 −

Escape sequence 含义
\\ \ 字符
\' ' 字符
\" " 字符
\? ? 字符
\a 警报或铃声
\b 退格
\f 换页
\n 换行
\r 回车
\t 水平制表符
\v 垂直制表符
\xhh . . . 一个或多个十六进制数字

示例

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

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

上述代码编译并执行后,将产生以下结果 −

Hello   World

String Literals

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

您可以使用 string literals 将长行拆分成多行,并用空白字符分隔各部分。

示例

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

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

定义常量

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

const <data_type> <constant_name> = value;

访问常量

您可以使用其名称访问常量,前提是它在作用域内。

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

//When constant is in local scope
constant_name

//When constant is in a class
class_name.constant_name

类常量

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

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

语法

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

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# 程序中定义和使用常量 −

using System;
namespace DeclaringConstants {
   class Program {
      static void Main(string[] args) {
         const double pi = 3.14159;   
            
         // constant declaration 
         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 Literals
      string regularString = "Hello, World!";
      string verbatimString = @"C:\Users\Admin\Documents\";
      
      Console.WriteLine("Regular String Literal: " + regularString);
      Console.WriteLine("Verbatim String Literal: " + verbatimString);
   
      // Floating Point Literals
      float floatLiteral = 3.14F;
      // Default floating-point type
      double doubleLiteral = 3.14159265359;
      // Requires 'M' suffix for high precision
      decimal decimalLiteral = 3.14159265359M;
      
      Console.WriteLine("\nFloating 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