c# - 如何在不更改属性值的情况下运行属性集?

标签 c# properties

我正在尝试使用属性在属性值更改时启用或禁用按钮。

例如:

string test
        {
            get
            {
                return xmlValue; // Reads a value from an XML file
            }
            set
            {
                if (xmlValue == null)
                {
                    button1.Enabled = false;
                }
                else
                {
                    button1.Enabled = true;
                }

                xmlValue = value; // Writes the value to an XML file
            }
        }

现在一切正常,除了启动时。在调用 set 之前,该按钮将始终处于启用状态。

我试过这个:

test = test;

它似乎工作正常。但这是正确的做法吗?

最佳答案

首先,我会先做突变:

xmlValue = value; // Writes the value to an XML file

if (xmlValue == null)
{
   button1.Enabled = false;
}
else
{
   button1.Enabled = true;
}

无论如何,我会执行以下操作之一来初始化状态:

  1. 在构造函数中,编写 test = null 即使它已经处于那个状态,至少你明确地初始化了它而不是将它分配给它自己。

    <
  2. 只需在设计器/XAML 中将 button1.Enabled 设置为 false。初始属性值应反射(reflect)程序的正确初始状态。

您发布的作业会奏效,但读起来不太好,或者不合常理,所以我会避免使用它。

关于c# - 如何在不更改属性值的情况下运行属性集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27363889/

相关文章:

c# - String.Format() 中的间距

c# - 在 EF4 中按 ID 选择通用存储库

java - 无法在 Java 中加载属性文件

java - twitter4j - 如何配置?

spring - 从另一个模块上下文访问属性文件

javascript - 迭代对象并过滤给定属性 javascript 中给定的特定值

c# - 如何将标签或按钮准确地放置在表单的中间?

c# - 间歇性 LifetimeScope 错误 : SelfRegistrationCannotBeActivated

c# - Array.copy 从 C# 到 Delphi

javascript - 在 JavaScript 中,为什么不存在的 "window"属性值在这两种情况下不同?