網(wǎng)站首頁(yè) 編程語(yǔ)言 正文
const和readonly經(jīng)常被用來修飾類的字段,兩者有何異同呢?
const
1、聲明const類型變量一定要賦初值嗎?
一定要賦初值
public class Student { public const int age; }
生成的時(shí)候,會(huì)報(bào)如下錯(cuò):
正確的應(yīng)該這樣寫:
public class Student { public const int age = 18; }
2、聲明const類型變量可以用static修飾嗎?
不可以
public class Student { public static const int age = 18; }
生成的時(shí)候,會(huì)報(bào)如下錯(cuò):
正確的應(yīng)該這樣寫:
public class Student { public const int age = 18; }
因?yàn)閏onst默認(rèn)是static。
3、運(yùn)行時(shí)變量可以賦值給const類型變量嗎?
不可以
public class Student { public const int age = 18; public Student(int a) { age = a + 1; } }
生成的時(shí)候,會(huì)報(bào)如下錯(cuò):
const類型變量是編譯期變量,無法把運(yùn)行時(shí)變量賦值給編譯期變量。
4、const可以修飾引用類型變量嗎?
可以,但只能給引用類型變量賦null值。
public class Student { public const Teacher teacher = new Teacher(); } public class Teacher { }
生成的時(shí)候,會(huì)報(bào)如下錯(cuò):
正確的應(yīng)該這樣寫:
public class Student { public const Teacher teacher = null; } public class Teacher { }
readonly
1、聲明readonly類型變量一定要賦初值嗎?
不一定,既可以賦初值,也可以不賦初值。
以下不賦初值的寫法正確:
public class Student { public readonly int age; }
以下賦初值的寫法也對(duì):
public class Student { public readonly int age = 18; }
2、運(yùn)行時(shí)變量可以賦值給readonly類型變量嗎???
可以
以下在構(gòu)造函數(shù)中給readonly類型變量賦值是可以的:
public class Student { public readonly int age = 18; public Student(int a) { age = a; } }
3、聲明readonly類型變量可以用static修飾嗎???
可以的
以下寫法正確:
public class Student { public static readonly int age = 18; }
總結(jié)
const修飾符:
- 用const修飾的變量是編譯期變量
- 不能把運(yùn)行時(shí)變量賦值給const修飾的變量
- const修飾的變量在聲明時(shí)要賦初值
- const修飾的變量不能在前面加static修飾
- cosnt也可以修飾引用類型變量,但一定要給引用類型變量賦null初值
readonly修飾符:???
- 用readonly修飾的變量是運(yùn)行時(shí)變量
- 可以把運(yùn)行時(shí)變量賦值給readonly修飾的變量
- readonly修飾的變量在聲明時(shí),既可以賦初值,也可以不賦初值
- readonly修飾的變量可以在前面加static修飾符
原文鏈接:https://www.cnblogs.com/darrenji/p/3835461.html
相關(guān)推薦
- 2023-04-24 Python?相對(duì)路徑報(bào)錯(cuò):"No?such?file?or?directory"'原因及解決方法_
- 2022-05-10 一起來學(xué)習(xí)C++中remove與erase的理解_C 語(yǔ)言
- 2022-06-18 Redis官方可視化工具RedisInsight的安裝使用詳細(xì)教程(功能強(qiáng)大)_Redis
- 2022-05-06 pyecharts的Tab和Legend布局詳情_python
- 2022-07-02 Prometheus+Grafana監(jiān)控Docker容器和Linux主機(jī)
- 2022-05-31 Golang庫(kù)插件注冊(cè)加載機(jī)制的問題_Golang
- 2022-04-25 Oracle導(dǎo)出導(dǎo)入表結(jié)構(gòu)操作實(shí)戰(zhàn)記錄_oracle
- 2023-01-10 利用C#實(shí)現(xiàn)修改圖片透明度功能_C#教程
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支