c# - 如何禁止使用字段而不是属性?

标签 c# properties

<分区>

我的类中有一个属性在 set 访问器中有很多逻辑:

private String text;

public String Text
{
   get { return text; }
   private set
   {
      // some actions with a value
      value = value.Replace('a', 'b');

      text = value;
   }
}

如何防止其他开发人员(甚至我)更改此类中的 field 而不是 property

如果有人这样写:

public Test(String text)
{
   this.text = text;
}

它会破坏我的类的逻辑!

最佳答案

通常,类应该足够小,这不应该成为问题。由于该字段是 private,因此只有同一类型内的代码才能访问该字段。但是,如果您需要强调重要性,您可以这样做:

[Obsolete("Use the Text property, or I break your legs; fair warning")]
private string text;

public string Text
{
#pragma warning disable 0618
    get { return text; }
    private set
    {
        // some actions with a value
        value = value.Replace('a', 'b');

        text = value;
    }
#pragma warning restore 0618
}

这不会阻止它们,但它可能有助于防止意外使用该字段。

关于c# - 如何禁止使用字段而不是属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23053602/

相关文章:

c# - List<T>.FindIndex 多个结果?

c# - ClientConnectionId 的单声道等效项

c# - 如何对输入值进行排序

c# - Web 上下文中静态属性的影响

如果没有属性,PHP 对象返回 false

c# - 使用 Ninject 和 wpf 从所有程序集中加载模块

c# - 在 C# 中访问非公共(public)基础属性

java - Java 类的外部属性

c# - 什么时候使用get;放;在 C# 中

ios - 如果我想给自己分配一个属性怎么办?