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