【问题标题】:make access modifier one for all members in class为类中的所有成员设置访问修饰符一
【发布时间】:2013-02-11 11:22:08
【问题描述】:

已经定义了这样的类:

class Data
{
    internal string f_source;
    internal string f_output;
    internal string password;
}

如您所见,我明确地为其中的每个成员定义了访问修饰符。

是否有某种方法可以同时为类中的所有成员定义默认访问修饰符?

也许,有什么属性让这样的梦想成真……不知道……

我尝试在类声明之前使用访问修饰符:

internal class Data
{
    string f_source;
    string f_output;
    string password;
}

但是,没有成功!

是否有任何建议:“如何解决这样的问题?”

【问题讨论】:

  • 我在这里没有发现问题。这是 C# 而不是 C++,在 C# 中,您在每个成员、方法、属性和构造函数的前面编写访问修饰符。恕我直言,它使它更清晰。有时当我切换到 C++ 时,我希望我也可以在那里使用它,但同样,那是 C++ 而不是 C#。 (我知道我可以使用'public:int getValue()');)
  • @Default internal 的默认值不正确。它默认为合法的最受限制的访问修饰符。那是 internal 对于直接在命名空间中的类,但 private 对于任何成员
  • @RuneFS 啊。我读得很快。我删除了我的评论。

标签: c# access-modifiers


【解决方案1】:

按照设计,您的要求在 C# 中是不可能实现的。

如果没有给出访问修饰符,C# 的规范指定使用哪个访问修饰符。默认值是合法的最受限制的访问修饰符。直接在命名空间中的类型(即不是嵌套类型)是内部的,而任何成员都是私有的,除非另有说明。

我敢肯定,这是一个设计决策,部分基于对 C++ 中访问修饰符如何工作的经验。一系列错误可能来自声明privatepublicetc 的文件的特定部分。必须声明它更具表现力(或者知道如果没有指定它会尽可能受到限制)。将受限保留为默认设置非常适合保留尽可能多的内部 (*) 实现细节并仅公开您真正需要公开的内容

(*) 不是修饰符

【讨论】:

    【解决方案2】:

    您的第二个定义类型使您的类只能在该类的同一程序集中访问。没有办法让所有类成员都成为所有成员的内部成员。

    看看这个:msdn internal defination&example

    祝你好运!

    【讨论】:

      猜你喜欢
      • 2014-01-02
      • 1970-01-01
      • 2020-02-05
      • 2012-08-24
      • 1970-01-01
      • 1970-01-01
      • 2010-11-07
      • 2014-04-27
      • 1970-01-01
      相关资源
      最近更新 更多