【问题标题】:Is it possible to not write `public` each time before a field in a block of public fields?是否可以每次都在公共字段块中的字段之前不写“public”?
【发布时间】:2012-09-15 13:38:32
【问题描述】:

我有一个包含许多领域的课程,其中大约一半是公开的。现在它看起来像这样:

public int someint1, someint2, someint3;
public string str1, str2;
public bool[] boolArray;
public List<string> listOfStrings;

……等等。之后还有一些私有字段。

是否可以为所有这些公共字段只写一次public

【问题讨论】:

  • 不,你不能那样做。但是,您可以使用标准 getter/setter 定义一个包含所需字段的自定义对象,然后您可以将该部分缩减为 public CustomObj state;
  • 字段永远不应该是公开的(除了可能的只读字段)。这是一条简单的规则,除非有充分的理由,否则不要偏离它。
  • @KonradRudolph 为什么,使用公共字段有什么不好?
  • @user1306322 - 答案在这里:stackoverflow.com/questions/480627/…
  • @user1306322 查看this question 及其副本以获取血腥细节。

标签: c# field access-modifiers


【解决方案1】:

不,在C# 中无法做到这一点,您必须为每个 字段声明其访问方式。 一般来说C#倾向于限制访问默认,所以即使不写任何东西,成员最终也会像private一样。

【讨论】:

    【解决方案2】:

    不,没有,您应该考虑使用属性而不是公共字段 - Why won't anyone accept public fields in C#?

    【讨论】:

    • 然后,作为下一步,也删除这些属性。他们还公开揭露国家。 Tell, don’t ask
    【解决方案3】:

    如果您不声明访问修饰符(私有、受保护、内部、公共),则代码将采用私有(因此最受保护的)。 否则,你必须自己声明,所以输入你需要的!

    【讨论】:

      猜你喜欢
      • 2019-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-09
      • 1970-01-01
      • 1970-01-01
      • 2013-06-05
      • 1970-01-01
      相关资源
      最近更新 更多