任何理由写在C#中的“私人”关键字?

据我所知, private是C#中的默认设置(这意味着如果我不写publicprotectedinternal等,默认情况下它是private的)。 (如果我错了,请纠正我)

那么,写这个关键字的原因是什么,或者为什么成员存在呢?

例如,当一个事件处理程序是自动生成的,它看起来像这样:

 private void RatTrap_MouseEnter(object sender, CheeseEventArgs e) { } 

但为什么它甚至写私人,如果这是暗示和默认? 只是让新手开发人员(谁不知道这是C#默认)知道它是私人的? 或者编译器有什么不同?

此外,有没有写“私人”(单独) 改变会员的可及性?

AFAIK,private是C#中的默认设置(这意味着如果我不写public,protected,internal等,默认情况下它是私有的)。 (请纠正我错误)。

这不是真的。 在命名空间(类,结构,接口等)中定义的types默认是内部的。 另外,不同types的成员具有不同的默认可访问性(如接口成员公开)。 有关详细信息,请参阅MSDN上的辅助function级别 。

也,

那么,写这个关键字的原因是什么,或者为什么它存在?

明确地指定它有助于表示您非常明确地将types设置为私有的意图。 这有助于您的代码的可维护性随着时间的推移。 这可以帮助其他开发者(或你自己)知道某个成员是默认的还是有意的,等等。

AFAIK,private是C#中默认的地方

不完全 – 默认是“可用于此声明的最受限访问”。 因此,例如,对于顶级types,默认是internal ; 对于嵌套types,默认是private

那么,写这个关键字的原因是什么,或者为什么它存在?

它明确表示,这有两个原因:

  • 对于那些不知道违约情况的人来说,按照你的问题(我个人从来没有喜欢过这个说法,但我觉得值得一提)
  • 它给人的印象是,你故意决定把它变成私人的,而不是仅仅违约了。

至于你最后的部分:

此外,是否有写“私人”(单独)会改变会员的可及性?

是的,使一半的财产比另一财产更具限制性:

 // Public getter, public setter public int Foo { get; set; } // Public getter, private setter public int Bar { get; private set; } 

曾经在任何地方都能使用默认设置,但我一直深信(部分由Eric Lippert),明确表示您已经考虑过,并决定私下做一些事情是一个好主意。

就我个人而言,我希望有一种方法可以用于密封/非密封的types声明 – 可能甚至没有默认值。 我怀疑许多开发者(如果我不小心的话,包括我自己在内)只是因为开发工具比封闭开发更less而离开课程。

private添加视觉混乱。 对那些坚持让事情明确的人,我会问:你也是用math来做这个吗? 例如:

 var answer = a + b / c; 

你觉得不清楚没有多余的括号附近的b / c

在C#中的规则是非常简单的: 默认情况下,一切尽可能接近私人。 所以如果你需要一些比默认值明显的东西,那就添加一个修饰符。 否则,请勿将不必要的关键字添加到您的代码中。

据我所知,private是C#中的默认地方

明确宣布私人 ,意味着你知道它是私人的。 不只是这样想,因为据你所知,这是默认的。 这也意味着查看代码的其他人知道它是什么。

没有“我认为是”,“我很确定”等等。 每个人都在同一页面上。

我不是C#开发人员。 如果我必须使用一些未明确声明为私有的代码,我可能会认为它是内部的

我不喜欢什么时候隐式设置。 当它们被明确地设置时,它不会那么清楚。

意图的可读性,certificate是我能想到的两个重要原因。

可读性 – 不是每个人都可能知道私人是默认的行为。

意图 – 清楚地表明您已明确声明财产是私人的(无论出于何种原因)。

明确指定可见性的一个很好的理由是,您不必考虑您所处环境的默认设置。

另一个很好的理由是因为FxCop告诉你这样做。

很多人(像我这样的人)经常以less数不同的语言编程。 明确这些事情可以防止我记住我编程的所有语言的所有奥秘细节。

我想说的是与其他同学的可读性保持一致。