【C#懒蛋编程——5分钟经验分享】03使用Description特性标签,简化查找表编写
因为篇幅很短,所以尝试全文字写法。几分钟看完的文字也没必要用十几分钟写完是吧。
Attribute(特性标签)是C#中非常有用的一个特性,有用到什么程度呢?以至于C++的很多开发者,都通过自己的预处理器和标签来增加这个功能(典型的如Qt和Unreal)
1.
在各种开发中,我们经常需要使用枚举来代表一组特性,同时又需要一些文字描述,这些描述可能是路径,或者是字符串,两者是一一对应的。
比如,我定义了一组材质,每个对应不同的文件加载路径。或者我定义了一组数据类型,每个对应不同的字符串简写。
我们自己写的数据导出工具中,就有这种写法。我在枚举中设定了很多导出类型,如IntArray,FloatArray等,但是我想要在对应的地方,把这些类型输出为字符串的简写,如IntArray输出为"Int[]",FloatArray输出为"Float[]"。要完成这一点,两者需要一个简单的对应关系。
如何做呢,可以做成Dictionary,也可以写class,或者做成外部Config,方法很多,但是这些写法都有一个问题,就是太罗嗦,内聚性不够。
2.
C#中,我们可以使用Description标签,把需要绑定的字符串内容填写进去,然后写一个函数,在需要的时候,把枚举的这个Description抓出来就行了。
之前的写法,你需要至少一组枚举值和一个查找表,如果你用class或外部config,你要写更多东西。
这种写法下,你只需要一组带Description标签的枚举就行了。那个抓取函数是提前写好的,可以重复使用。代码非常清晰简洁,内聚很高。至于效率什么的我不担心,毕竟我的应用领域,C#这种写法一般都是小型的初始化,花上一点代价,让代码更清晰是值得的。
转载于:https://blog.51cto.com/goldlion/2158240
【C#懒蛋编程——5分钟经验分享】03使用Description特性标签,简化查找表编写相关推荐
- 【C#懒蛋编程——5分钟经验分享】02使用partial关键字,分离代码
因为篇幅很短,所以尝试全文字写法.几分钟看完的文字也没必要用十几分钟写完是吧. C#中的partial关键字,是一个非常有用的东西,尤其是在代码组织方面. 1. 每一个项目都会构建大量的class文件 ...
- 【C#懒蛋编程——5分钟经验分享】01逆序遍历删除,防止迭代器失效
因为篇幅很短,所以尝试全文字写法.几分钟看完的文字也没必要用十几分钟写完是吧. foreach遍历List操作很方便,这节省了部分[]取数据和下标计算的代码.写起来很简洁.但是如果是遍历删除的话,你会 ...
- 【比赛经验】陈成龙博士Kaggle计算机编程竞赛数据挖掘经验分享
来源:腾讯广告算法大赛(ID:TSA-Contest) 作者简介 陈成龙, 2015 年博士毕业于中山大学,研究图像篡改检测,在图像领域顶级期刊IEEE TIP上发表论文2篇,Kaggle Crowd ...
- UG编程老师傅纯经验分享,通过面铣来实现黄线加工的设置方式
今日来讲一讲用面铣来完成黄线加工的设置方法,其实面铣和平面铣的设置是大同小异的,咱们先看下图的黄红加工刀路 黄线能够加工圆形或方法或异形工件都OK,只需你的机台支持走黄线,下面咱们来看下在面铣加工中详 ...
- 哈理工第一节编程课及经验分享
1.学习的第一个代码 #include <iostream> #include <cdt ...
- mysql 索引修复_mysql数据库索引损坏及修复经验分享
推荐:Windows Server 2003 下配置 MySQL 集群(Cluster)教程这篇文章主要介绍了Windows Server 2003 下配置 MySQL 集群(Cluster)教程,本 ...
- ❤️大学三年沉淀,把我的学习经验分享给你,爆肝万字带你走进编程世界!❤️
Hello,大家好,我是Alex.时光匆匆,暑假过的很快,转眼又到了大学的开学季,我也是又混进了我们学院的新生群,发现大家对计算机充满着迷之向往,啊哈哈哈,不过没有人带着入门还是很容易走弯路的哦,今天 ...
- 漫谈程序员(五)20年资深程序员编程经验分享
20年资深程序员编程经验分享 原文作者乔纳森·丹尼可(Jonathan Danylko)是一位自由职业的web架构师和程序员,编程经验已超过20年,涉足领域有电子商务.生物技术.房地产.医疗.保险和公 ...
- 想学python编程-【经验分享】新手如何快速学好Python?
原标题:[经验分享]新手如何快速学好Python? 什么样的人适合学习编程?到底Python作为编程入门语言合适吗?学习Python编程,我们应该如何学?大概的学习内容包括哪些? 今天我们就用一篇文章 ...
最新文章
- Lucene 对文档打分的规则整理记录
- webSQL 实现即时通讯
- 概率统计:第三章 多维随机变量及其分布
- 【ArcGIS微课1000例】0006:创建随机点(Create Random Points)
- Deepin系统手动安装oracle jdk8详细教程
- php解析目录函数怎么用,PHP中目录解析函数
- (15)FPGA面试技能提升篇(TDD-LTE协议、GTX IP)
- mysql 浮点型详解 简书_MySQL数据类型;基本操作
- vue微信、支付宝支付
- SQLserver常用创建表 添加字段sql
- matlab插值:拉格朗日插值
- Java实现:挖金矿问题
- lync2010服务器暂时无法使用,lync 2010音频服务无法启动问题
- 解决 “Windows 功能” 没有Hyper-V
- 电脑操作手机scrcpy软件
- 计算机技术对艺术设计的意义,解析数字艺术对艺术设计的影响论文
- 视频号添加任意小程序
- 高级加密标准 (AES) 和安全断言标记语言 (SAML) 的 Web 安全
- 真实生活的记录:我三年的外企生涯(1)出处:天涯虚拟社区
- 解析VCARD文件(vcf格式)导入QQ通讯录功能