最新要闻
- 2023性能战神!卢伟冰:Redmi K60 Pro是用户追求性能的不二之选
- 环球要闻:卡梅隆发文diss漫威电影:超级英雄演的像大学生
- 【天天报资讯】集体涨价!Intel 13代酷睿8款新U开卖:65W 24核高达4889元
- 为什么人类很难准确预测未来?
- 全球快看点丨《和平精英》开枪时的振动:居然可以造福盲人
- 特斯拉降价后:门店半小时售10台 老车主直呼被损失4万
- 焦点速读:特斯拉降价引海外热议:这是《孙子兵法》!欲消灭传统车企
- 你拿多少?报告称2022年终奖人均2.19万元 一线城市近3万元
- 环球今日讯!果香浓郁!徐福记DODO综合果味棒棒糖 60支19.9元
- 【世界速看料】保护隐私!微信键盘iOS 1.0.2版更新:体积膨胀到237MB
- 全球观天下!联想GeekPro 2023主机首销6199元起:13代i5+RTX 3060
- 【天天快播报】春节前最后一次成品油调价来了!或迎2023年首次降价
- 关注:畅想未来:2023年手机还能怎样进化?
- 对话郑刚:与罗永浩分歧关键不是商业利益
- 最野性的福特SUV!探险者Timberline亮相:超帅黑橙配色
- 33.58万起!比亚迪腾势D9成交付最快破万高端MPV
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
C#、TS和Dart对比3:编译时常量和运行时常量
一、理清一下数据的命名习惯
(相关资料图)
本地变量、本地常量、成员变量、成员常量、实例变量、静态变量、字段、属性......不同开发语言,对定义在方法和类中的数据有不同的命名方式。在学习常量之前,先理清一下。以下仅是我的习惯,大家可以参考一下:
1、在方法中:①变量称为本地变量,常量称为本地常量;②TS和Dart都存在全局作用域,如果是在全局作用域中定义的变量和常量,则分别称之为全局变量和全局常量;③参数是比较特殊的变量,方法定义时称之为形参,方法调用时称之为实参。
2、在类中:①将字段称为数据成员,属性/函数等称为方法成员;②字段根据不同作用和性质,划为实例变量字段、实例常量字段、静态变量字段、静态常量字段,属于类的数据成员;②拥有对应的getter和setter方法的字段,将字段、getter和setter打包在一起,统称为属性,和函数一样,属于类的方法成员。
二、常量的一些概念
1、变量初始化或赋值后,值还可以改变,但常量一旦初始化或赋值后,值不可变。
2、有一些常量,必须在定义常量的时候初始化赋值,值在编译期决定,称之为编译时常量。C#、TS和Dart中,都使用const来定义,但使用略有区别,详见下文。
3、而有一些常量,即可以在编译期初始化赋值,也可以先定义,然后在运行时再赋值,称之为运行时常量。C#和TS中,使用readonly关键词来定义,且只能在类中使用;而Dart使用final关键词来定义,即可以在类中使用,也可以在方法中使用。
4、补充:Dart是为flutter而生的,而flutter中,const和final使用非常广泛,所以需要特别掌握。
三、编译时常量
1、C#中的const:即可以在方法中使用,也可以在类中使用。在类中使用时,具有静态字段特征(但不需要用static关键词修饰),可以通过【类名.常量名】的方式访问。
public class Program{ public const int age = 18; //定义类中的实例常量字段,是类的数据成员。具有static静态成员的特征。 static void Main(string[] args) { //const int a; //报错,const定义编译时常量,必须初始化赋值 const int a = 1; //定义方法中的本地常量 //a = 2; //报错,常量赋值后不能再改变 Console.WriteLine(age); //在方法中使用类的常量字段 Console.WriteLine(a); //1 }}
2、TS中的const:只能在方法中使用,不能在类中使用
class Program{ //public const a2:number = 1; //报错,不能在类中使用const创建数据成员 main():number{ const a2:number = 2; //定义本地常量 return a1+a2; }}//const a1:number; //报错,const定义常量(此处为全局常量),必须初始化赋值const a1:number = 1; //定义全局常量let p1 = new Program();console.log(a1); //1console.log(p1.main()); //3
3、Dart中的const:即可以在方法中使用,也可以在类中使用。在类中使用时,不能使用const创建实例常量字段,必须定义为静态常量字段【static const...】。
void main() { //const int a; a = 1; //报错,const创建常量时,必须初始化赋值 const int a1 = 1; const a2 = 2; //使用const定义常量,具有类型推荐功能,可以省略类型声明 const a3 = 2*a2; //可以使用其它常量为const常量赋值 /* * 以下为难点,const不仅可以定义常量,还可以用于创建常量值* 使用const创建常量值,主要用于创建常量构造函数。常量构造函数创建的对象,不可以改变 */ var a4 = const []; //const创建了一个空数组常量值,并赋值给变量a4 a4 = [1]; //变量a4仍然可以改变,不能变的是使用【const []】创建的常量值 const a5 = const []; //表达式一定是常量的上下文中,可以消除冗余,等效于const a5 = []; //a5 = [1]; //报错,a5是常量,不能更改 print(a1); //1 print(a2); //2 print(a3); //4 print(a4); //[1] print(Employee.age); //18。直接通过类调用静态常量字段}class Employee{ //const age = 18; //报错,const只可以创建静态常量字段 static const age = 18;}
四、运行时常量
1、C#中的readonly:在类中定义静态常量字段和实例常量字段,在运行时设置值
public class Program{ public const int age = 18; //定义类中的常量字段,是类的数据成员 static void Main(string[] args) { var s1 = new Shape(1.0,2.0); //s1.NumberOfSides = 5; //报错,实例常量无法修改 }}public class Shape{ public static readonly string Color = "red"; //readonly常量可以定义为静态字段,声明时可以初始化 public readonly int NumberOfSides; //readonly常量也可以定义为实例字段,且可以是运行时常量,声明时不初始化 //readonly常量NumberOfSides的值,在运行时决定,可以根据不同的构造函数设置不同的值 public Shape(double side1,double side2) { this.NumberOfSides = 4; Console.WriteLine("构造一个矩形"); } public Shape(double side1,double side2,double side3) { this.NumberOfSides = 3; Console.WriteLine("构造一个三角形"); } public void SetNumberOfSides() { //NumberOfSides = 5; //报错,类的普通函数中无法修改readonly常量 }}
2、TS中的readonly:用法和C#一样,和上例不同的是,TS不支持构造函数重载,只能有一个constrator
//模仿入口函数,创建一个立即执行函数【(()={})()】(()=>{ class Shape { public static readonly Color:string = "red"; public readonly NumberOfSides:number; constructor(side1:number,side2:number){ this.NumberOfSides = 4; console.log("构造一个矩形"); } public setNumberOfSide():void{ //this.NumberOfSides = 5; //报错,类的普通函数中无法修改readonly常量 } } var s1 = new Shape(1.0,2.0); //s1.NumberOfSides = 5; //报错,实例常量无法修改})()
3、Dart中的final:即可以在方法中使用,也可以在类中使用。
void main(Listargs) { //final可以和const一样使用 final int a1 = 1; final a2 = 2; //a1 = 3; //报错,常量一旦赋值,不能在修改 //final常量,在运行时才赋值,可以先声明,再赋值 //如果此处声明为【final a3;】,则类型推断为dynamic final int a3; a3 = 3; //体现final是运行时常量更好的例子 //const int a4 = getNum(); //报错,const不能用于运行时 final int a4 = getNum();}int getNum() { return 4;}//类中使用final声明常量字段class Shape { static final String color = "red"; //静态常量,需要声明时初始化 final int numberOfSides; //声明实例常量字段,可以不初始化 Shape(this.numberOfSides); //使用构造函数,当创建实例时,设置final常量的值}
C#、TS和Dart对比3:编译时常量和运行时常量
2023性能战神!卢伟冰:Redmi K60 Pro是用户追求性能的不二之选
环球要闻:卡梅隆发文diss漫威电影:超级英雄演的像大学生
【天天报资讯】集体涨价!Intel 13代酷睿8款新U开卖:65W 24核高达4889元
为什么人类很难准确预测未来?
全球快看点丨《和平精英》开枪时的振动:居然可以造福盲人
当前消息!模板-线段树
全球热点!算法学习笔记(8.1): 网络最大流算法 EK, Dinic, ISAP
学习笔记——Spring简介;Spring搭建步骤;Spring的特性;Spring中getBean三种方式;Spring中的标签
实时:AcWing257 关押罪犯
当前关注:使用vscode调试PHP底层C源码
特斯拉降价后:门店半小时售10台 老车主直呼被损失4万
焦点速读:特斯拉降价引海外热议:这是《孙子兵法》!欲消灭传统车企
你拿多少?报告称2022年终奖人均2.19万元 一线城市近3万元
环球今日讯!果香浓郁!徐福记DODO综合果味棒棒糖 60支19.9元
【世界速看料】保护隐私!微信键盘iOS 1.0.2版更新:体积膨胀到237MB
全球观天下!联想GeekPro 2023主机首销6199元起:13代i5+RTX 3060
【天天快播报】春节前最后一次成品油调价来了!或迎2023年首次降价
关注:畅想未来:2023年手机还能怎样进化?
对话郑刚:与罗永浩分歧关键不是商业利益
最野性的福特SUV!探险者Timberline亮相:超帅黑橙配色
33.58万起!比亚迪腾势D9成交付最快破万高端MPV
天天通讯!《魔兽世界》国服关闭倒计时!网易向玩家发短信安利《逆水寒》
从超前点映到480P投屏 视频平台赚钱只能靠“割韭菜”?
环球快消息!程序猿创造的AI虚拟漂亮老婆 被真女友强制“安乐死”了
天天热议:液金+水冷压住RTX 40系显卡:机械革命晒新旷世笔记本散热系统
特斯拉海外大降价!老外车主气炸请求维权:免费送FSD
环球关注:4K缩水到480p 爱奇艺称“有权变更内容” 律师回应称肯定违约了
环球讯息:《流浪地球2》发行通知公开:片长173分钟对标《阿凡达2》
时讯:网友铁了心要等一加11 Pro 李杰:没有11 Pro、11 Ultra
遭黑客广泛利用:微软无奈计划淘汰诊断工具MSDT
你涨工资没?全国招聘平均月薪增幅最高城市 最低1.2万、还在加薪
世界微速讯:曾两个月涨粉上千万!张同学回应热度消退:可以坦然面对
视点!小米6钉子户换上Redmi K50至尊版:速度就是快
马斯克突然调整Twitter API:第三方客户端全灭
不再是小仪表盘 新款比亚迪秦PLUS DM-i曝光:续航猛增至1310km
热点聚焦:燃油版“宏光MINIEV”!三菱Delica Mini首发:配0.66L发动机
【环球快播报】“蓝兔”邮票黄永玉有多潇洒?北京第一辆私家车拥有者 93岁开法拉利飙车
每日信息:三星将长焦发挥到极致!曝Galaxy S24 Ultra支持150倍变焦
快资讯:iPhone 14兔年限量保护套售价398元贵吗?部分型号卖断货
TP-LINK发布新款AX3000双频千兆Wi-Fi 6光口AP:支持DC、PoE双供电
世界微速讯:长白山人参旗舰店:全须生晒参4盒99元狂促(300元大额券)
播报:联想拯救者刃7000K 2023今日开售:i5-13400F+RTX3060 首发7199元
焦点热议:豆瓣9.5高分国漫!《中国奇谭》第二季已在筹备:要打造IP宇宙
最新快讯!二十六位朗读主播!讯飞有声书图赏
当前热讯:“1888万彩礼”事件作者承认编故事 知乎:永久封禁账号
热资讯!奇葩公司发大鹅当年货 员工开心又无奈:放公司很吵
天天微速讯:故意排放能怎样?日本决定核废水2023春夏排入海 多国网友愤怒
2022年动力电池装车量排名:“宁迪”双王吃下超7成市场
每日关注!73岁保安徒手接住4楼坠落女子获奖 网友:见义勇为、值得点赞
HarmonyOS智能座舱是怎样炼成的?华为官方揭秘软件开发标准
全球讯息:大手笔!蔚来官宣:春节高速路换电全免费、不限次数
今日最新!(六)elasticsearch 源码之选主流程分析
环球今日讯!java中关于继承,多态及方法调用的底层细节
如何构建基于 DDD 领域驱动的微服务?
世界新资讯:火山引擎 DataTester:一次 A/B 测试,帮助产品分享率提升超 20%
珠江的源头在哪里?珠江的长度是多少千米?
当前热文:被称作“电费刺客” 商家:踢脚线取暖器耗电量可达空调3倍
蜀国的皇帝有哪些?蜀国的皇帝列表排名
当前视点!明晚8点开播!央视网络春晚第二波阵容官宣:王心凌、撒贝宁等加盟
魔兽国服关闭当天 老外喜迎新版本升级 网友:暴雪杀人诛心
豆瓣9.2分神作!《新·福音战士剧场版:终》终于官宣引进
天天时讯:2023年电脑城奸商依然猖狂:3千元笔记本卖5千 出库不能退
为黛西小姐开车故事背景是什么?为黛西小姐开车故事梗概是什么?
打电动是什么意思?打电动是什么游戏?
特百惠是哪国的牌子?特百惠卖什么产品?
电视机顶盒怎么连接电视机?电视机顶盒怎么破解?
怎么给冰箱加氟?冰箱加氟一般需要多少钱?
excel怎么转化为在线表格?excel怎么转化为PDF?
lol怎么亮徽章?lol徽章有什么用?
斗鱼鱼丸多少钱一个?斗鱼鱼丸怎么兑换人民币?
用SGDK开发世嘉MD游戏:入门篇
快资讯:FAA飞航系统已有30年历史 老迈程度堪比N64
环球百事通!90后女孩神还原蔡明春晚40年造型火了 本尊回应5个字
焦点观察:果粉愿望要实现!iPhone 16 Pro直接256GB存储起步
环球快消息!12月轿车销量排名出炉:传统“豪强”反攻、比亚迪也挡不住?
世界观点:超大范围降雪来袭:全国多地上百条高速局部路段公路封闭
最新:误将磁盘格式化的应急响应
头条:【Python爬虫项目实战】Python爬虫豆瓣Top250电影短评数据保存本地
2023最新nacos的windows 10安装(保姆级)
滚动:我国让科幻片成了现实!全球首艘智能型无人系统科考母船交付使用
世界热点评!6英寸墨水屏带来全新听书体验!讯飞有声书评测:内置26种朗读主播 方言英语都能读
全球观速讯丨微软经典Media Player获新生:新版本面向全部Win10用户推出
焦点快看:读编程与类型系统笔记06_函数类型的高级应用
全球热消息:NVIDIA发布GeForce 527.37驱动 4倍性能提升的DLSS3游戏再加一
焦点播报:苹果A处理器不玩性能!iPhone 16曝光:屏幕更完美、2TB售价欲超2万
环球信息:美国家庭平均月薪出炉引热议:超出想象!就这还靠信用卡续命
你贡献过几部iPhone?全球最强打工人:苹果库克年薪近1亿美元 自愿降薪40%
每日速递:监管新规下车险保费最高可降23%?业内人士:有些还会变贵
天天即时看!打破多项纪录!我国汽车产销总量连续14年全球第一:新能源暴涨翻倍
《王者荣耀》兔年春节福利一览:武则天神器传说皮肤来了
我国第一型“金牌火箭” 长二丙火箭成功发射亚太6E卫星
全球动态:[概率论与数理统计]笔记:3.5 大数定律与中心极限定理
环球滚动:Spring Cloud Alibaba 2022.0.0.0 版本发布啦!
国产高端手机份额第一!卢伟冰:小米13系列好评99% 自然销量高
【天天快播报】史上第一颗6GHz CPU!i9-13900KS发布:性能涨3% 价格涨20%
理想汽车CEO曾试图接触威马沈晖?本人回应:纯属放屁!
世界新资讯:韩国第一个月球探测器发回第一张照片:地月黑白合影
每日资讯:【深度学习】常用PyTorch CUDA版本whl下载及在线安装命令
世界今日讯!「闲话随笔」势能分析法