大学期间我一直在使用public,想知道public, private和protected之间的区别吗?

还有,相对于什么都没有,静态有什么作用呢?


当前回答

我认为这与好的面向对象设计有关。如果您是库的开发人员,则希望隐藏库的内部工作方式。这样,以后就可以修改库的内部工作方式。所以你把你的成员和辅助方法设为私有,只有接口方法是公共的。应该被覆盖的方法应该受到保护。

其他回答

Hmm.

参见这里:访问修饰符。

简而言之:

Public使方法或类型从其他类型/类中完全可见。

Private只允许包含私有方法/变量的类型访问私有方法/变量(注意,嵌套类也可以访问包含类的私有方法/变量)。

Protected与private类似,只是派生类也可以访问Protected方法。

“Nothing”是VB。NET等价于null。虽然如果你提到的“nothing”意味着“没有访问修饰符”,那么这要视情况而定,尽管一个非常粗略的经验法则(当然在c#中)是,如果你没有显式地指定访问修饰符,方法/变量声明通常会受到尽可能多的限制。 即。

public class MyClass
{
    string s = "";
}

实际上等同于:

public class MyClass
{
    private string s = "";
}

当没有显式指定访问修饰符时,链接的MSDN文章将提供完整的描述。

嗯…

静态意味着您可以在没有类实例的情况下访问该函数。

您可以直接从类定义中访问。

公共-任何人在任何地方都可以访问。 Private -只能从它所属的类中的with访问。 Protected -只能从类中的with或从类继承的任何对象访问。

除了在VB中,没有什么是像null的。 静态意味着你有那个对象的一个实例,那个类的每个实例都有方法。

我创建了另一种类型的可视化。也许这是更好的理解方式

https://github.com/TropinAlexey/C-sharp-Access-Modifiers

Public -如果你能看到类,那么你也能看到方法

Private -如果你是类的一部分,那么你可以看到这个方法,否则就不能。

Protected -与Private相同,加上所有后代也可以看到该方法。

静态(类)——还记得“类”和“对象”之间的区别吗?忘掉这些吧。“static”也是如此。类是自身的唯一实例。

静态(方法)——无论何时使用这个方法,它都有一个独立于它所属类的实际实例的参考框架。