为了账号安全,请及时绑定邮箱和手机立即绑定

VS2008的自动属性支持默认值吗?

VS2008的自动属性支持默认值吗?

C#
倚天杖 2018-12-25 19:10:02
[DefaultValue(true)]public bool EnableShow { get; set; }因为bool默认为false,但我希望默认为true。用了上面的方式,但好像没效果。所以请问vs2008的自动属性支持默认值吗?
查看完整描述

2 回答

?
DIEA

TA贡献1820条经验 获得超2个赞

的确存在楼主所说的现象,可以通过以下代码示例说明问题。

 

[object Object]代码示例
using System;
using System.ComponentModel;

namespace Lucifer.CSharp.Sample
{
    class Program
    {
        static void Main()
        {
            TestClass test = new TestClass();

            AttributeCollection attributes =
                TypeDescriptor.
                GetProperties(test)["EnableShow"].
                Attributes;

            DefaultValueAttribute attribute =
                (DefaultValueAttribute)attributes
                [typeof(DefaultValueAttribute)];

            Console.WriteLine(
                "The default value is: " + 
                attribute.Value.ToString());
            Console.WriteLine(
                "The default value is: " + 
                test.EnableShow.ToString());
        }
    }

    class TestClass
    {
        [DefaultValue(true)]
        public bool EnableShow { get; set; }
    }
}

 

俺以为 DefaultValueAttribute 是用来给代码生成器使用的。比如 Microsoft 的 VS 可视化设计器利用这个来重置成员值。

如果想要达到楼主的目的,自动属性这个语法糖无法实现。


查看完整回答
反对 回复 2018-12-29
?
慕村9548890

TA贡献1884条经验 获得超4个赞

自动属性不支持default value和readonly,对于default value可以在构造函数中给他赋个值

查看完整回答
反对 回复 2018-12-29
  • 2 回答
  • 0 关注
  • 723 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信