令人疑惑的defaultValueAttribute
http://www.cnblogs.com/chenxizhang/archive/2009/06/02/1494200.html
在编写一些自定义类型的时候,我们通常希望给某些属性设置默认值。我们会很自然地
class Employee
{
[DefaultValue(25)]
public int Age { get; set; }
}
然后,我们在调用代码中想这么去使用它
Employee e = new Employee();
Console.Write(e.Age);//直接读取属性,其实不会返回DefaultValue的值,而是返回该属性类型的初始值,例如:属性为Int型,则返回0
很奇怪对吧,这跟我们想象的不是一样的
那么,如果真要读取这个DefaultValue的值,咋办呢
DefaultValueAttribute att = TypeDescriptor.GetProperties(e)["Age"].Attributes[typeof(DefaultValueAttribute)] as DefaultValueAttribute;
Console.WriteLine(att.Value.ToString());//这样才能读取到25这个值
很费劲对吧,但确实需要这样做。实际上,这是读取Attribute的通用方法。
那么,你可能会问啦,这么麻烦的话,那么我能不能不用DefaultValue而实现我们的目的呢?
我们一般是这样做的
private int age = 25;
public int Age
{
get { return age; }
set { age = value; }
}
好吧,这样可以解决问题。但还有一个问题,就是说如果这样的话,为什么要存在DefaultValue这个Attribute呢?答案就是,这是给设计器(一般指的是VS IDE)用的一个属性。
官方的说明请参考
http://msdn.microsoft.com/zh-cn/library/system.componentmodel.defaultvalueattribute(VS.80).aspx
总之,我的感觉是,这个东西最好不要用,也确实没有什么大用
本文转自cnn23711151CTO博客,原文链接: http://blog.51cto.com/cnn237111/636421,如需转载请自行联系原作者
令人疑惑的defaultValueAttribute相关推荐
- 免费GPU哪家强?谷歌Kaggle vs. Colab
作者 | Jeff Hale 译者 | Monanfei 责编 | 夕颜 出品 | AI科技大本营(id:rgznai100) 谷歌有两个平台提供免费的云端GPU:Colab和Kaggle, 如果你想 ...
- 5 门前途美好的编程语言
程序猿(ID:imkuqin) 编译 原文:https://insights.dice.com/2019/08/12/5-programming-languages-future-greatness/ ...
- Java基础篇:Executor框架
文章目录 概述 Executor框架结构 Executor框架的使用示意图 `ThreadPoolExecutor`类介绍 `ThreadPoolExecutor` 类分析 推荐使用 `ThreadP ...
- 为什么安装的是gpu版本训练时还是用的cpu?_免费GPU哪家强?谷歌Kaggle vs. Colab | 硬核评测...
作者 | Jeff Hale译者 | Monanfei责编 | 夕颜出品 | AI科技大本营(id:rgznai100) 谷歌有两个平台提供免费的云端GPU:Colab和Kaggle, 如果你想深入学 ...
- 图灵奖获得者 Alan Kay:突破常规思维,创建下一代科研社区(附视频)
2020 北京智源大会 本文属于2020北京智源大会嘉宾演讲的整理报道系列.北京智源大会是北京智源人工智能研究院主办的年度国际性人工智能高端学术交流活动,以国际性.权威性.专业性和前瞻性的" ...
- 从云到端,谷歌的AI芯片2.0
来源:脑极体 得芯片者得天下.我们可以把这句话再延伸一下说,得AI芯片者得未来的天下. 对于智能终端厂商来说,能够自研SoC芯片似乎才是顶级实力的象征.众所周知,盘踞全球智能手机前三甲的三星.华为. ...
- 谷歌程序员犯低级错误?少打一个字符引发重大 Bug,致大量 Chromebook 无法解锁...
整理 | 郑丽媛 出品 | CSDN(ID:CSDNnews) 初学编程的程序员难免会犯一些低级错误,这不难理解. 可当这种低级错误出现在谷歌经过三个开发者版本进而推出的 Chrome OS 正式版中 ...
- 【译】JavaScript中的Callbacks
你是否遇到过"callbacks"一词,但是不知道这意味着什么?别着急.你不是一个人.许多JavaScript的新手发现回调也很难理解. 尽管callbacks可能令人疑惑,但是你 ...
- wParam和lParam两个参数到底是什么意思?
在Windows的消息函数中,有两个非常熟悉的参数:wParam,lParam. 这两个参数的字面意义对于现在的程序来说已经不重要了,因为它是16位系统的产物,为了保持程序的可移植性,就将它保存了下来 ...
- 编写安全的ASP代码
作者:never_at_safechina.n 来源:www.safechina.net 类别:安全防护 添加日期:2004.03.15 今日/总浏览:4/33553 ASP中数据库的安全是一个很 ...
最新文章
- 辞去美国终身教职回国的帅教授,拟增列为顶尖985大学博导
- TensorFlow练习2: 对评论进行分类
- c语言课设代写一般多少钱_结婚彩礼一般多少钱 2019彩礼会涨到多少钱
- python中string数据库_python – 将字节字符串保存到数据库中的v...
- Python标准库之csv(1)
- ORA-00845: MEMORY_TARGET not supported on this system
- mysql 设置时区_MySQL实战干货 | 如何处理由时区设置引发的 SQL 执行“卡顿”?...
- Python--面向对象学习继承(11.17)
- 架构设计文档规范文档
- 猎人能单拿修理机器人图纸_南京创新周麒麟行:他们为铁路配备“体检”机器人...
- 【原创】自己动手写控件----XSmartNote控件
- 【计算机图形学】画线算法——Bresenham算法(任意斜率)
- 数据科学分布——泊松分布
- 大一计算机专业学期计划范文,大一新学期学习计划范文(通用5篇)
- JT/T 808-2019、JT/T 809-2019文档分享
- 亚马逊广告api v2版php扩展库
- php图片留白,img底部留白问题的六大解决方法
- 汉字转换为拼音Java工具类
- 基于fpga的单线激光雷达数据处理
- ORACLE 中OVER()结合rank(),dense_rank(),rownumber() 使用方法
热门文章
- 数据样本过大 数据维度过大:用户名做一个聚类2.可以将时间分段,达到降维的效果
- leetcode53
- 编译原理完整学习笔记(三):词法分析
- 279.完全平方数(力扣leetcode) 博主可答疑该问题
- 451.根据字符出现频率排序(力扣leetcode) 博主可答疑该问题
- 上海自考计算机应用基础实践,上海自考《计算机应用基础》试题练习(八)
- php局部缓存,Smarty局部缓存的几种方法简介_php实例
- bay——RAC 表空间时数据文件误放置到本地文件系统-介质恢复.txt
- 【python 类】【部分转发】设计模式 -- 责任链模式 (类之间的联动)
- 微信小程序开发04-打造自己的UI库