关于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

转载于:https://www.cnblogs.com/xuefeng1982/archive/2009/06/19/1506937.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值