关于DefaultValueAttribute类的一些误解!


这个DefaultValueAttributte特性时常令大家比较疑惑,特别是看了MSDN文档中关于这个类的说明,大家可能就更加的疑惑了,文档中关于DefaultValueAttribute特性的说明如下:

指定属性 (Property) 的默认值。

所以大家可能都以为通过应用这个特性就会设置属性的默认值,于是大家可能编写了类似的代码:

public class Child
{
private int i=0;
[DefaultValue(100)]
public int I
{
get
{
return i;
}
set
{
i = value;
}
}
}

static void Main(string[] args)
{
Child c = new Child();
Console.WriteLine(c.I.ToString()); //大家可能会认为指定了这个I属性的默认值为100,这里就会输出100,实//际上这里输出的是0
}

实际上这个特性根本就没有初始化属性的值,这个属性只是用来指定属性的默认值,供反射或设计器等获取数据的,所以这个特性应该总是设置成等于其应用到的属性的初始值,这段代码应该设置成0

具体可以参考微软的说明:

http://support.microsoft.com/default.aspx/kb/311339/zh-cn

优质内容筛选与推荐>>
1、生成树协议
2、解决vue组件内前置路由守卫beforeRouteEnter无法获取上下文this
3、从RGB色转为灰度色算法(转)
4、Emacs奇技淫巧
5、网站特定时间限制访问次数


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号