我对自己在C#方法范围,最好的情况下使用在ASP.Net的几个相关问题:公共静态,公共和静态方法有什么区别?
- 在C#,之间有什么区别:
- 一个
public static
方法 - 一个
public
方法 - 一个
static
方法
- 一个
- 我正在使用MVC和网络服务;在我的问题#1中,在方法范围方面,每个
method scope
类型的内存占用情况会带来怎样的差异,例如,在使用它之后,请问static
会释放函数内存?
我对自己在C#方法范围,最好的情况下使用在ASP.Net的几个相关问题:公共静态,公共和静态方法有什么区别?
public static
方法public
方法static
方法method scope
类型的内存占用情况会带来怎样的差异,例如,在使用它之后,请问static
会释放函数内存?public
本身意味着这是基于实例的部件,其是对外部呼叫者(那些具有访问类型本身)访问。
static
本身意味着该成员不是基于实例的:您可以在不需要任何特定实例(甚至根本不需要任何实例)的情况下调用它;如果没有可访问性限定符,则假定为非公共 - 因此外部呼叫者无法访问该成员。
public static
是static
方法是到外部呼叫者访问。
在这两种情况下,内存使用情况都是相同的:在方法中声明的任何变量的作用域都是方法调用本身(作为实现细节:通过堆栈;同样:我假设没有“捕获变量” async
或yield
使用),
这不是特定于ASP.NET/MVC。然而,控制器上的“动作”方法是IIRC,预计是公开的/实例,因此和的public
修饰符,和没有的static
修饰符。
基本上:
无障碍:
静态的/ etc:
this.
)和static
成员static
成员自动存取只没有访问说明符的静态方法将是私有的。你不能在课堂外访问它。
请考虑以下类。
class TestClass
{
public int MyProperty { get; set; }
static void SomeStaticMethod()
{
}
public static void SomeOtherStaticMethod()
{
SomeStaticMethod(); // You can use the static method inside
}
public void InstanceMethod()
{
SomeStaticMethod();
}
}
,当你使用它:
TestClass tc = new TestClass();
tc.InstanceMethod();
TestClass.SomeOtherStaticMethod();
TestClass.SomeStaticMethod(); // Thats an error because SomeStaticMethod is private and not accessible
public
是访问修饰符。所以在任何地方应用它都是指范围。
static Foo
不是公开的,这意味着它在课堂以外是不可见的。
默认情况下,类成员是私有的,所以如果你没有指定你的静态方法是plublic的,你将无法从课堂外访问你的方法。
有关访问修饰符的更多信息请参见: Access Modifiers (C# Programming Guide)
这一切都很好的人,为您提供的例子,但这些东西都很好已经记录在互联网上,和一个非常简单的搜索可以产生明确结果。让我沉醉你,找对主题MSDN引用(两个主题,顺便说一句,成员访问和非实例成员不严格相关):
首先你必须access modifiers,特别是public
在这种情况下:
公共
类型或构件可以通过在同一 组件的任何其他代码或引用它的另一个组件进行访问。
无论成员是否为static
,这都是无关紧要的。
然后,你必须static, non-instance stuff:
静态
静态类和类成员被用于创建不需要创建类的实例来访问数据和功能 。静态 类成员可以用来分离数据和行为是 独立于任何对象标识
的因此,任何差异是可能的接入和“实例”规则的组合。
内存管理是另一回事;没有一个方法,属性,字段,不管访问和上下文,都会奇迹般地减少内存,这就是你作为开发人员必须考虑的每一行代码(在编码时利用CLR的内置内存管理的帮助适当地)。
public?....... –