任何理由写在C#中的“私人”关键字?
据我所知, private
是C#中的默认设置(这意味着如果我不写public
, protected
, internal
等,默认情况下它是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数不同的语言编程。 明确这些事情可以防止我记住我编程的所有语言的所有奥秘细节。
我想说的是与其他同学的可读性保持一致。