大家好我很困惑const long size =((long)int.Maxvalue+1)/4
我怎麼interprate它... 又會有怎樣當我們定義static const long size =((long)int.Maxvalue+1)/4
發生...... 是什麼readonly
成員....不斷字段成員
Q
不斷字段成員
3
A
回答
8
常量
恆定構件在編譯時定義,並且不能在運行時改變。常量使用const關鍵字聲明爲一個字段,並且必須在聲明它們時進行初始化。例如;
public class MyClass
{
public const double PI = 3.14159;
}
無法將類的成員聲明爲「static const」。
- 因爲聲明爲「const」的成員變量已經是「static」。
在代碼中的其他任何地方都不能更改PI,因爲這會導致編譯器錯誤。
只讀
只讀構件是一樣的,因爲它代表了一個不變的值的常數。區別在於只讀成員可以在運行時初始化,在構造函數中也可以在聲明時初始化。 例如:
public class MyClass
{
public readonly double PI;
public MyClass()
{
PI = 3.14159;
}
}
0
0
不能定義static const
,因爲const
總是static
。編譯器將在這種情況下產生一個錯誤('常量'XYZ'不能被標記爲靜態')。
readonly
成員只能初始化一次,即在構造函數中,或者在字段的聲明處。
readonly
和const
之間的差異在於readonly
成員將在運行時評估,而const
將在編譯時評估。
0
那麼這個語句聲明瞭一個長的常量,其大小約爲int(2^31)最大可能值的四分之一。
const無論如何都是靜態的,不需要像這樣裝飾它們。只讀字段可以是靜態或實例,只能初始化一次(在構造函數中 - 當然,您可以在聲明時指定它,但代碼只能進入構造函數)。常量嵌入到代碼中,而只讀字段將在代碼中被引用(如果您是庫開發人員,則這很重要)。也可以通過編譯器認爲常量表達式初始化常量,而只讀字段可以通過一些計算結果進行初始化。
相關問題
- 1. 「字段」不是'System.Data.DataRow'的成員
- 2. 字段成員錯誤
- 3. GarbageCollector無效成員字段?
- 4. 爲什麼成員字段不能有字段初始值設定項調用成員函數?
- 5. 缺少必填字段:成員
- 6. NHibernate的QueryOver和訪問=「字段」成員
- 7. 編程的VB成員字段ReDim
- 8. 位字段成員的大小?
- 9. ASP.Net成員資格附加字段
- 10. 所有陣列成員的php字段
- 11. 如何擴展基本成員字段?
- 12. 適配器的指針成員字段
- 13. Expression Engine成員字段 - 顯示所有字段類型
- 14. 多態性成員字段,當字段這也是
- 15. 找不到成員從串插段
- 16. 使用GetField調用成員。在VB.NET中找不到字段
- 17. ElasticSearch:URL的聚合不斷分裂字段
- 18. ScrollView不斷推送文本字段
- 19. 製作一段文字不中斷?
- 20. 成員函數的C++ GDB斷點
- 21. 如何截斷SQL查詢中的數字串數據成員
- 22. 斷言字符串數組成員內容
- 23. Web Api:使用EF包含成員字段數而不是成員對象數據返回JSON
- 24. 'ToArray'不是'字符串'的成員
- 25. 爲什麼C#不能推斷類成員的類型?
- 26. decltype不會推斷const對象的常量成員
- 27. SELECT查詢切斷字段?
- 28. AS3文本字段,截斷
- 29. 在$ http的截斷字段
- 30. php截斷字段問題
Duplicate:http://stackoverflow.com/questions/2559107/constant-and-readonly-in-c – chriszero 2010-08-27 06:17:19