public static,public和static方法有什么区别?

Dhw*_*ani 2 c# asp.net-mvc-3

我有一些关于C#方法范围的相关问题,以及ASP.Net中的最佳用例:

  1. C#中,有什么区别:
    • 一种public static方法
    • 一种public方法
    • 一种static方法
  2. 我正在使用MVCWeb服务 ; 就问题#1中的方法范围而言,在每种method scope类型的内存占用情况下会产生什么差异,例如,static在使用后会释放函数内存吗?

Mar*_*ell 11

public 本身意味着这是一个基于实例的成员,外部调用者(可以访问类型本身的访问者)可以访问它.

static本身意味着该成员不是基于实例的:您可以在不需要任何特定实例(甚至任何实例)的情况下调用它; 如果没有可访问性限定符,则假定为非公共 - 因此外部调用者无法访问该成员.

public staticstatic该方法向外部呼叫者访问.

两种情况下的内存使用情况相同:方法中声明的任何变量都限定在方法调用本身(作为实现细节:通过堆栈;还有:我假设没有"捕获变量",没有asyncyield使用),

这没有什么特定于ASP.NET/MVC.然而,在控制器的"行动"的方法是,IIRC,有望成为公/实例,因此public修改,并没有static修改.

基本上:

辅助功能:

  • 无指定:默认为"private"(或外部类的"internal")
  • "private":仅适用于该类型内的代码
  • "protected":可用于该类型或子类型内的代码
  • "internal":可用于同一程序集中的代码
  • "受保护的内部":"受保护" "联合""内部"
  • "public":所有可以访问该类型的呼叫者都可以使用

静态/等:

  • 无指定:基于实例; 需要一个实例,代码可以自动访问实例成员(via this.)和static成员
  • "静态":不需要实例; 代码static只能自动访问成员