为什么不公开所有字段/属性/方法?

我知道这可能听起来很愚蠢,但我真的很想知道:) 即时学习c#, 如你所知,你需要设置“对象”(按钮,标签,文本,变量等)公开或任何你喜欢的。 但是,您仍然需要编写如下代码:
// my point is you cant just type label1.text you need to type class.label1.text
// so there is no chance of getting bugged
//because there is label1 in each of forms/classes
 class Classlol = new class();
 classlol.label1.blabla
那么以其他形式使其无法达到的重点是什么?为什么每件事都不公开或默认不公开? 谢谢。     
已邀请:
使用类的关键是能够将代码分成逻辑相关的部分。这使您的代码更易于理解和维护。 例如,如果需要修改类中的代码,则可以更多地关注类的运行方式,而不是项目的其他部分。但是,您的类的公共成员会稍微限制这种分离,因为如果您修改公共成员,则会影响项目的其他部分。 保持尽可能多的私有类(尽管仍然可以从您的应用程序中使用)最大化它与应用程序其余部分之间的分离。它使您更容易只考虑您正在处理的类中的逻辑,并且它允许您修改这些私有成员,而无需考虑应用程序的其他部分可能会受到什么影响。     
简单来说,就像你穿衣服的原因一样。并非一切都应该随时向公众开放。选定的东西需要公开,以便其他人可以与他们互动,但其他东西是私人的,应该保持在该类的内部。 虽然,我可能不应该在最后一句话中使用内部词,因为还有第三种选择:
internal
访问修饰符。 VB.NET(
Friend
)中使用的名称可能更清晰。这表示一个数据应该对单个程序集中的所有其他类可见,但是从外部隐藏。类似的类比也适用:有些东西可能与你最亲密的朋友分享,但仍然不想公开。 还有其他更复杂的原因,比如启用信息隐藏,最大化特定类与应用程序其余部分之间的分离,并维护一致的公共接口,即使版本之间的实现细节可能已更改,所有这些都有助于良好的面向对象设计。如果你真的想了解这个细节,我建议你找一本关于面向对象编程的好书。如果不是不可能的话,掌握像C#这样的面向对象语言是非常困难的,而不需要对基础知识有充分的了解。 默认情况下,这些内容不公开,因为它们可能包含敏感信息,或者至少是您不希望作为类的公共接口的一部分公开的信息。将事物公之于众是一个更大的决定,风险更大,而不仅仅是将其设为私有,因此您必须明确做出决定。     
我建议你阅读更多关于面向对象编程中的抽象。也许维基百科关于抽象的文章是一个很好的起点。 编辑:康拉德是绝对正确的,抽象不会自动暗示“隐藏”信息。你可以说这是封装在面向对象编程中的作用。 我想我想说的是这个问题不是特定于C#,而是需要对一般面向对象的编程原理进行一些阅读。     
默认访问修饰符是
internal
,这意味着它在同一个程序集中是公共的,在程序集外部是私有的。 如果要将某些数据公开为公共数据,例如某些Label的文本,最佳做法是创建公共只读属性,如下所示:
public string LabelText
{
   get { return MyLabel.Text; }
}
要访问它,您必须使用此类代码:
string text = classInstance.LabelText;
这样,Label本身不公开,但每个人都可以阅读其文本。     

要回复问题请先登录注册