<!--注釋:博友看過此文章后可以將自己的練習筆記寫在下面評論區或私信發給我,我看到會將其添加到文章筆記欄里面並備注上博友的名字/昵稱!這樣可以讓更多的博友看到更好的學習當然自己也可以在這里再次回顧並與其他博友交流。--!>
今天我們來講一下c#常量:C#的常量是固定值,程序執行期間不會改變。常量可以是任何基本數據類型,比如整數常量、浮點常量、字符常量或者字符串常量,還有枚舉常量。常量可以被當作常規的變量,只是它們的值在定義后不能被修改。
C#常量有以下五種:整數常量、浮點常量、字符常量、字符串常量、定義常量五類。
1.整數常量
整數常量可以是十進制、八進制或十六進制的常量。前綴指定基數:0x 或 0X 表示十六進制,0 表示八進制,沒有前綴則表示十進制。整數常量也可以有后綴,可以是 U 和 L 的組合,其中,U 和 L 分別表示 unsigned 和 long。后綴可以是大寫或者小寫,多個后綴以任意順序進行組合。這里有一些整數常量的實例:
212 /* 合法 */ 215u /* 合法 */ 0xFeeL /* 合法 */ 078 /* 非法:8 不是一個八進制數字 */ 032UU /* 非法:不能重復后綴 */
以下是各種類型的整數常量的實例:
85 /* 十進制 */ 0213 /* 八進制 */ 0x4b /* 十六進制 */ 30 /* int */ 30u /* 無符號 int */ 30l /* long */ 30ul /* 無符號 long */
2.浮點常量
一個浮點常量是由整數部分、小數點、小數部分和指數部分組成。您可以使用小數形式或者指數形式來表示浮點常量。這里有一些浮點常量的實例:
3.14159 /* 合法 */ 314159E-5L /* 合法 */ 510E /* 非法:不完全指數 */ 210f /* 非法:沒有小數或指數 */ .e55 /* 非法:缺少整數或小數 */
字符常量是括在單引號里,例如,'x',且可存儲在一個簡單的字符類型變量中。一個字符常量可以是一個普通字符(例如 'x')、一個轉義序列(例如 '\t')或者一個通用字符(例如 '\u02C0')。
在 C# 中有一些特定的字符,當它們的前面帶有反斜杠時有特殊的意義,可用於表示換行符(\n)或制表符 tab(\t)。在這里,列出一些轉義序列碼:
轉義序列 | 含義 |
---|---|
\\ | \ 字符 |
\' | ' 字符 |
\" | " 字符 |
\? | ? 字符 |
\a | Alert 或 bell |
\b | 退格鍵(Backspace) |
\f | 換頁符(Form feed) |
\n | 換行符(Newline) |
\r | 回車 |
\t | 水平制表符 tab |
\v | 垂直制表符 tab |
\ooo | 一到三位的八進制數 |
\xhh . . . | 一個或多個數字的十六進制數 |
以下是一些轉義序列字符的實例:
namespace EscapeChar { class Program { static void Main(string[] args) { Console.WriteLine("Hello\tWorld\n\n"); Console.ReadLine(); } } }
當上面的代碼被編譯和執行時,它會產生下列結果:
Hello World
4.字符串常量
字符串常量是括在雙引號 "" 里,或者是括在 @"" 里。字符串常量包含的字符與字符常量相似,可以是:普通字符、轉義序列和通用字符
使用字符串常量時,可以把一個很長的行拆成多個行,可以使用空格分隔各個部分。
這里是一些字符串常量的實例。下面所列的各種形式表示相同的字符串。
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\r\ntwo\r\nthree"; string j = @"one two three";
5.定義常量
常量是使用 const 關鍵字來定義的 。定義一個常量的語法如下:
const <data_type> <constant_name> = value;
下面的代碼演示了如何在程序中定義和使用常量:
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
筆記
1、Convert.ToDouble 與 Double.Parse 的區別。實際上 Convert.ToDouble 與 Double.Parse 較為類似,實際上 Convert.ToDouble內部調用了 Double.Parse:
(1)對於參數為null的時候:
- Convert.ToDouble參數為 null 時,返回 0.0;
- Double.Parse 參數為 null 時,拋出異常。
(2)對於參數為""的時候:
- Convert.ToDouble參數為 "" 時,拋出異常;
- Double.Parse 參數為 "" 時,拋出異常。
(3)其它區別:
- Convert.ToDouble可以轉換的類型較多;
- Double.Parse 只能轉換數字類型的字符串。
- Double.TryParse 與 Double.Parse 又較為類似,但它不會產生異常,轉換成功返回 true,轉換失敗返回 false。最后一個參數為輸出值,如果轉換失敗,輸出值為 0.0。
附測試代碼:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { try { //string a = "0.2"; //string a = null; string a = ""; try { double d1 = Double.Parse(a); } catch (Exception err) { Console.WriteLine("d1轉換出錯:" + err.Message); } try { double d2 = Convert.ToDouble(a); } catch (Exception err) { Console.WriteLine("d2轉換出錯:" + err.Message); } try { double d3; Double.TryParse(a,out d3); } catch (Exception err) { Console.WriteLine("d3轉換出錯:" + err.Message); } } finally { Console.ReadKey(); } } } }