基本上和c語言中的常量類似,但有區別
在const關鍵字的基礎上,新增了readonly,readonly關鍵字在筆記中說明。
常量是固定值,程式執行期間不會改變。常量可以是任何基本資料型別,比如整數常量、浮點常量、字元常量或者字串常量,還有列舉常量。
常量可以被當作常規的變數,只是它們的值在定義後不能被修改。
整數常量、浮點常量、字元常量和c語言基本類似,這裡就不詳細展開
字串常量稍有不同:
字串常量是括在雙引號 "" 裡,或者是括在 @"" 裡。字串常量包含的字元與字元常量相似,可以是:普通字元、轉義序列和通用字元
使用字串常量時,可以把乙個很長的行拆成多個行,可以使用空格分隔各個部分。
這裡是一些字串常量的例項。下面所列的各種形式表示相同的字串。
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 //說明可以換行
twothree";
然後c#中還有string型別,和c++類似的。c語言只有字元陣列,string型別操作起來靈活很多,c++中string型別操作也是非常靈活的。
定義常量
常量是使用 const 關鍵字來定義的 。定義乙個常量的語法如下:
const = value;
下面的**演示了如何在程式中定義和使用常量:
例項using system;
public class consttest
}static void main()
, y = ", mc.x, mc.y);
console.writeline("c1 = , c2 = ",
sampleclass.c1, sampleclass.c2);}}
當上面的**被編譯和執行時,它會產生下列結果:
x = 11, y = 22
c1 = 5, c2 = 10
筆記: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;
trycatch (exception err)
trycatch (exception err)
}finally}}
}執行結果:
d1轉換出錯:輸入字串的格式不正確。
d2轉換出錯:輸入字串的格式不正確。
**中的try catch可以在錯誤的時候丟擲異常,和c++類似,中是c語言所沒有的機制
2.convert.toint32() 與 int.parse() 的區別
沒搞清楚convert.toint32和int.parse()的細細微區別時千萬別亂用,否則可能會產生無法預料的結果,舉例來說:假如從url中取乙個引數page的值,我們知道這個值是乙個int,所以即可以用convert.toint32(request.querystring["page"]),也可以用,int.parse(request.querystring["page"]),但是如果page這個引數在url中不存在,那麼前者將返回0,0可能是乙個有效的值,所以你不知道url中原來根本就沒有這個引數而繼續進行下一下的處理,這就可能產生意想不到的效果,而用後一種辦法的話沒有page這個引數會丟擲異常,我們可以捕獲異常然後再做相應的處理,比如提示使用者缺少引數,而不是把引數值當做0來處理。
(1)這兩個方法的最大不同是它們對null值的處理方法:
convert.toint32(null)會返回0而不會產生任何異常,但int.parse(null)則會產生異常。
(2)對資料進行四捨五入時候的區別
a. convert.toint32(double value)
如果 value 為兩個整數中間的數字,則返回二者中的偶數;即 3.5轉換為4,4.5 轉換為 4,而 5.5 轉換為 6。 不過4.6可以轉換為5,4.4轉換為4
b. int.parse("4.5")
直接報錯:"輸入字串的格式不正確".
c. int(4.6) = 4
int轉化其他數值型別為int時沒有四捨五入,強制轉換
(3)對被轉換型別的區別
int.parse 是轉換 string為int
convert.toint32是轉換繼承自object的物件為int的(可以有很多其它型別的資料).
你得到乙個object物件,你想把它轉換為int,用int.parse就不可以,要用convert.toint32.
1.靜態常量(編譯時常量)const
在編譯時就確定了值,必須在宣告時就進行初始化且之後不能進行更改,可在類和方法中定義。定義方法如下:
const double a=3.14;// 正確宣告常量的方法
const int b; // 錯誤,沒有初始化
2.動態常量(執行時常量)readonly
在執行時確定值,只能在宣告時或建構函式中初始化,只能在類中定義。定義方法如下:
class program
static void main()
}在下面兩種情況下:
a、取值永久不變(比如圓周率、一天包含的小時數、地球的半徑等)。
b、對程式效能要求非常苛刻。
可以使用 const 常量,除此之外的其他情況都應該優先採用 readonly 常量。
關於常量變數命名的規則:
帶有 private 私有訪問修飾符的常量通常要以駱駝命名法命名,即以下劃線開頭,第乙個單詞的首字母小寫,餘下單詞首字母大寫。
private const string _bookname = "新華字典";
帶有 public 公共修飾符、protected 受保護修飾符等的常量要以帕斯卡命名法命名,即各個單詞首字母都要大寫。
C 筆記2 常量
基本上和c語言中的常量類似,但有區別 在const關鍵字的基礎上,新增了readonly,readonly關鍵字在筆記中說明。常量是固定值,程式執行期間不會改變。常量可以是任何基本資料型別,比如整數常量 浮點常量 字元常量或者字串常量,還有列舉常量。常量可以被當作常規的變數,只是它們的值在定義後不能...
C 零碎筆記2 常量
常量是固定值,在程式執行期間不會改變。這些固定的值,又叫做字面量。常量可以是任何的基本資料型別,可分為整型數字 浮點數字 字元 字串和布林值。常量就像是常規的變數,只不過常量的值在定義後不能進行修改。整數常量可以是十進位制 八進位制或十六進製制的常量。字首指定基數 0x 或 0x 表示十六進製制,0...
C 筆記 常量
c 是在c的基礎上發展來的。其在常量的表示上要比c更加優越,所以我們要利用c 的更優越的特性來寫 更安全,更容易閱讀。定義常量時,巨集是一種常用的方法。但是在c 中,利用const 常量比巨集更具優越性。巨集是簡單的文字替換,無型別檢查,沒有作用域。而const 常量恰恰彌補了這個缺點。const ...