C# 的常量类别汇总,及常量的定义方式
常量是固定值。
可为任何基本数据类型:整数,浮点数,字符串等。
一、整数常量
前缀:
- 十进制:没有前缀
- 八进制:前缀为 0
- 十六进制:前缀为 0x 或 0X
后缀:
- unsigned:后缀 U 或 u(表示无符号)
- long:后缀 L 或 l(表示 64 位有符号整数类型)
- 多个后缀可任意顺序组合
例:
212 // 合法,整型
215u // 合法,无符号整型
0xFeeL // 合法,十六进制整形(0~F 代表 0~15)
078 // 非法,八进制数为 0~7
032UU // 非法,不能重复后缀
二、浮点数常量
浮点数常量包含:
- 整数部分
- 小数点 + 小数部分 或 指数部分
例:
3.14159 // 合法
314159E-5L // 合法(314159 * 10^-5)
510E // 非法,有指数标记,但是缺了指数部分
210f // 非法,没有小数部分/指数部分
.e55 // 非法,没有整数部分/小数部分
三、字符常量
表示 一个 字符,用单引号。
一个字符常量可以是:
- 一个普通字符
- 一个转义序列(如 ‘\t’)
- 一个通用字符(如 ‘\u02C0’)
转义字符表:
转义序列 | 含义 |
---|---|
\ | \ 字符 |
‘ | ‘ 字符 |
“ | ” 字符 |
? | ? 字符 |
\a | Alert 或 bell |
\b | 退格键(Backspace) |
\f | 换页符(Form feed) |
\n | 换行符(Newline) |
\r | 回车 |
\t | 水平制表符 tab |
\v | 垂直制表符 tab |
\ooo | 一到三位的八进制数 |
\xhh . . . | 一个或多个数字的十六进制数 |
四、字符串常量
字符串用双引号,或者用@双引号。
例:
string a = "hello, world"; // hello, world
string b = @"hello, world"; // hello, world
string c = "hello \t world"; // hello world
string d = @"hello \t world"; // hello \t world
string e = "Joe said \"Hello\" to me";
// Joe said "Hello" to me
string f = @"Joe said ""Hello"" to me";
// Joe said "Hello" to me
string g = "\\\\server\\share\\file.txt";
// \\server\share\file.txt
string h = @"\\server\share\file.txt";
// \\server\share\file.txt
混淆的地方:
string i = "one\ntwo\rthree\r\nfour\n\rfive\r\n\nsix";
运行结果:
one
three
four
five
six
可见以下问题:
- \n 表示换行
- \r 把前面这一行的内容覆盖了,相当于回到行首
- \n\r 和 \r\n 的效果一样,都是换行
- 2 个 \n 即 2 次换行
- 据说这个差别是操作系统的关系,未证实 ~
string j = @"one
two
three";
运行结果:
one
two
three
五、定义常量
语法:
const <data_type> <constant_name> = value;
例:
using System;
public class ConstTest
{
class SampleClass
{
public int x;
public int y;
public const int c1 = 5;
public const int c2 = c1 + 5;
public SampleClass(int p1, int p2)
{
x = p1;
y = p2;
}
}
static void Main()
{
SampleClass mC = new SampleClass(11, 22);
// 实例化 SampleClass 这个类,通过对 类下面的方法 SampleClass 进行初始化赋值
Console.WriteLine("x = {0}, y = {1}", mC.x, mC.y);
Console.WriteLine("c1 = {0}, c2 = {1}",
SampleClass.c1, SampleClass.c2);
}
}
运行结果:
x = 11, y = 22
c1 = 5, c2 = 10