C# DefaultValue 属性不起作用

Twe*_*ter 2 c# attributes control-library

我正在使用C# windows窗体控件库程序来创建我自己的控件,代码如下:

    public partial class MyControl : UserControl
    {
        public MyControl()
        {
            InitializeComponent();
        }

        private float mMinValue;

        [Browsable(true)]
        [EditorBrowsable(EditorBrowsableState.Always)]
        [Category("Design") , DefaultValue(0.0)]
        public float MinValue
        {
            get { return mMinValue; }
            set { mMinValue = value; }
        }

        private float mMaxValue;

        [Browsable(true)]
        [EditorBrowsable(EditorBrowsableState.Always)]
        [Category("Design") , DefaultValue(1.0)]
        public float MaxValue
        {
            get { return mMaxValue; }
            set { mMaxValue = value; }
        }
    }
Run Code Online (Sandbox Code Playgroud)

程序运行时,MinValue和MaxValue的默认值都是0,那么如何正确设置默认值呢?

ATC*_*ATC 6

默认值属性仅向设计者指示属性的默认值是什么。它不会将其设置为属性背后成员的实际值。MSDN 页面上也提到了默认值属性:(
在备注部分)

注意
DefaultValueAttribute 不会导致使用该属性的值自动初始化成员。您必须在代码中设置初始值。

因此,正如其他人已经提到的,您需要自己在代码中设置这些值(我喜欢在构造函数中设置这些值,而不是在私有成员的声明中设置,但我认为这只是个人喜好的问题)。