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

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


当前回答

嗯…

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

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

其他回答

当前访问修饰符的另一种可视化方法(c# 7.2)。希望这个模式能帮助你更容易地记住它 (请按此图片浏览。)

外内

如果你很难记住两个词的访问修饰符,记住由外而内。

Private protected:外部私有(相同程序集)内部受保护(相同程序集) 保内:保外(同一组件)保内(同一组件)

Private状态表示变量只能被同一类的对象访问。受保护状态将这种访问权限扩展到该类的后代。

“从上表中我们可以看到隐私和受保护之间的区别……我认为两者是一样的....那么这两个单独的命令有什么用呢?

查看MSDN链接了解更多信息

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

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

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

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

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

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

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

c#总共有6个访问修饰符:

private:使用此可访问性声明的成员可以在包含类型中可见,但对任何派生类型、同一程序集中的其他类型或包含程序集中之外的类型都不可见。也就是说,访问仅限于包含类型。

protected:使用此可访问性声明的成员可以在包含程序集中从包含类型派生的类型中可见,也可以在包含程序集中从包含类型派生的类型中可见。也就是说,只能访问包含类型的派生类型。

internal:使用此可访问性声明的成员可以在包含该成员的程序集内可见,它对包含该成员的程序集之外的任何程序集都不可见。也就是说,访问仅限于包含程序集。

internal protected:使用此可访问性声明的成员可以在包含程序集内部或外部从包含类型派生的类型中可见,它也对包含程序集内的任何类型可见。也就是说,访问仅限于包含程序集或派生类型。

public:使用此可访问性声明的成员可以在包含此成员的程序集或引用包含该成员的程序集的任何其他程序集中可见。也就是说,访问不受限制。

在c# 7.2中,增加了一个新的可访问性级别:

private protected:使用此可访问性声明的成员可以在包含程序集中从此包含类型派生的类型中可见。对于非从包含类型派生的任何类型或包含程序集外部的任何类型都不可见。也就是说,访问权限仅限于包含程序集中的派生类型。

源代码,包括新的私有受保护访问修饰符的示例代码