我知道这听起来很愚蠢,但我真的很想知道 :) 我目前正在学习 C#,
如您所知,您需要将“对象”(按钮、标签、文本、变量等)设置为公共(public)或您喜欢的任何内容。
但是,您仍然需要编写这样的代码:
// 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
那么以其他形式使其无法访问有什么意义呢?为什么每件事都不公开或默认情况下不公开?
谢谢。
最佳答案
简单来说,这与你穿衣服的原因几乎相同。并不是所有的东西都应该在任何时候都暴露在公众面前。选定的内容需要公开以便其他人可以与它们交互,但其他内容是私有(private)的并且应该保留在该类内部。
不过,我可能不应该在最后一句话中使用内部这个词,因为还有第三种选择:internal
访问修饰符。 VB.NET 中使用的名称 (Friend
) 可能更清楚。这表明一段数据应该对单个程序集中的所有其他类可见,但对外部隐藏。类似的类比也适用:有些事情您可能会与最亲密的 friend 分享,但仍然不想公开。
还有其他更复杂的原因,比如启用信息隐藏,最大化特定类与应用程序其余部分之间的分离,以及保持一致的公共(public)接口(interface),即使实现细节可能在版本之间发生变化,所有其中有助于良好的面向对象设计。如果您真的想了解细节,我建议您阅读一本关于面向对象编程的好书。在没有扎实的基础知识的情况下,即使不是不可能,也很难掌握像 C# 这样的面向对象语言。
默认情况下,事物不是公开的,因为它们可能包含敏感信息,或者至少是您不想作为类的公共(public)接口(interface)的一部分公开的信息。将某些内容公开是一个更大的决定,比简单地将其私有(private)化风险更大,因此您不得不明确地做出该决定。
关于c# - 为什么不是所有字段/属性/方法都是公开的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5210540/