C 常量資料與唯讀字段

2022-05-18 20:24:35 字數 1265 閱讀 8535

常量資料

c#提供了const關鍵字來定義常量,如果我們要為應用程式定義邏輯上和某個類或結構相關的一組已知值的話,就非常有用。

假如我們建立乙個mymathclass的工具類,且需要定義乙個pi值(假如是3.14),如果不希望別的開發者改變pi值,可以使用如下常量定義pi值:

class

mymathclass

class

program

",mymathclass.pi);

//錯誤!常量資料不能被修改。

mymathclass.pi

=3.15

;console.readline();}}

注意:定義常量時必須為常量指定初始值,常量一旦定義就不能修改了。

class

mymathclass }

在編譯時必須知道常量的值!

唯讀字段

和常量密切聯絡的概念是唯讀字段(不要和唯讀屬性混淆哦,唯讀屬性指只有get塊的屬性)。和常量相似,唯讀字段不能在賦值後改變。然而,和常量不同,賦值給唯讀字段可以在執行時決定。因此在建構函式作用域範圍內給唯讀字段賦值是合法的(其他地方不行!)。

class

mymathclass

public

void

changepi()

}

另:唯讀字段不是隱式靜態的,要定義靜態唯讀欄位就需要使用static關鍵字了。

問題:請敘述const與readonly的區別。

const 關鍵字用於修改欄位或區域性變數的宣告。它指定欄位或區域性變數的值不能被修改。常數宣告引入給定型別的乙個或多個常數,開心哦。const資料成員的宣告式必須包含初值,且初值必須是乙個常量表示式。因為它是在編 譯時就需要完全評估。const成員可以使用另乙個const成員來初始化,前提是兩者之間沒有迴圈依賴。readonly在執行期評估賦值,使我們得以在確保「唯讀訪問」的前提下,把object的初始化動作推遲到執行期進行。

readonly 關鍵字與 const 關鍵字不同: const 字段只能在該字段的宣告中初始化。readonly 字段可以在宣告或建構函式中初始化。因此,根據所使用的建構函式,readonly 字段可能具有不同的值。另外,const 欄位是編譯時 常數,而 readonly 欄位可用於執行時常數。readonly 只能在宣告時或者建構函式裡面初始化,並且不能在 static 修飾的建構函式裡面。

常量和唯讀欄位的區別

總結一下常量和唯讀欄位的區別 一 值的區別 常量 const 是已知的,不能修改的值。const 都是靜態的,不能使用 static 修飾。唯讀字段 readonly 不能修改的 唯讀欄位的值不能在編譯時確定,而是在執行時確定的。readonly 可以用static 修飾,也可以不用。二 賦值方法區...

const 常量資料,唯讀

2 const的用法小結 引入const的目地 既要使資料能在一定範圍內共享,又要保證它不被 任意修改,這時可以使用const即把有關的資料定 義為常量。const 唯讀常量,初始化之後就不能修改 常物件的資料成員都是常資料成員,因此常物件的 建構函式只能用引數初始化表對常資料成員進行初 始化。指向...

C 程式設計(十五) 唯讀字段

唯讀字段 當欄位宣告中含有 readonly 修飾符時,該宣告所引入的字段為唯讀字段。給唯讀欄位的直接賦值只能作為宣告的組成部分出現,或在同一類中的例項建構函式或靜態建構函式 現。在這些上下文中,唯讀字段可以被多次賦值。準確地說,只在下列上下文中允許對 readonly 字段進行直接賦值 在用於引入...