C 筆記2 常量

2022-02-04 11:19:27 字數 3956 閱讀 9264

基本上和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 ...