c#静态方法和非静态方法详细介绍

C#的类中可以包含两种方法:静态方法和非静态方法。 使用了static 修饰符的方法为静态方法,反之则是非静态方法。 静态方法是一种 特殊的成员方法,它不属于类的某一个具体的实例,而是属于类本身。 所以对静态方法不需要 首先创建一个类的实例,而是采用类名.静态方法的格式 。

1.static方法是类中的一个成员方法,属于整个类,即不用创建任何对象也可以直接调用! static内部只能出现static变量和其他static方法!而且static方法中还不能使用this....等关键字..因为它是 属于整个类!

2.静态方法效率上要比实例化高,静态方法的缺点是不自动进行销毁,而实例化的则可以做销毁。
3.静态方法和静态变量创建后始终使用同一块内存,而使用实例的方式会创建多个内存.

4.C#中的方法有两种:实例方法,静态方法. 类的方法代码只有一份,它们的生命周期和类是一致的.实例方法是通过对象名调用的,静态方法与类关联而不是 与对象名关联.
5.那么在程序中什么地方可以利用静态字段和静态构造方法,通常适用于于一些不会经常变化而又频繁使用的数 据,比如连接字符串,配置信息等,当满足上面所 说的两点时,进行一次读取,以后就可以方便的使用了,同 时也节约了托管资源,因为对于静态成员,一个静态字段只标识一个存储位置。 对一个类无论创建了多少 个实 例,它的静态字段永远都只有一个副本(副本我理解为只有一块内存 静态成员存在于内存,非静态成员需要实例化才会分配内存,所以静态成员不能访问非静态的成员..因为静态成员 存在于内存,所以非静态成员可以直接访问类中静态的成员.
公用的处理函数,使用静态方法应该没有问题..牵涉 到数据共享,静态变量的函数要多考虑...静态变量要小心使用.. 静态方法 原理就是共享代码段 共享代码段不会产生任何问题 因为代码段都是给CPU作为"读取"用的,除非你进行恶意"修改"运行时的代码段 所以静态方法是可以放心使用的 静态变量 原理就是共享数据段 同上 只要没有进行"写入"操作就不会产生问题 但是数据通常都是用于读和写 所以静态变量要注意使用 下面是一个使用静态方法的例子

class Class1 {
[STAThread]
static void Main(string[] args)
{
int i = MyClass.Add(3,5); //调用静态方法
Console.WriteLine(i);
}
}
class MyClass
{
public static int Add(int x,int y )
{ return x + y ;
}
}

时间: 2024-12-15 01:33:46

c#静态方法和非静态方法详细介绍的相关文章

C#静态方法与非静态方法比较

c#静态方法与非静态方法比较: 一.静态方法:使用static修改的方法就是静态方法,否则就是非静态方法. 二.差异比较: 第一:C#静态成员:(1)静态成员属于类所有,非静态成员属于类的实例所有. (2)每创建一个类的实例,都会在内存中为非静态成员新分配一块存储. 总结:静态成员属于类所有,为各个类的实例所公用,无论类创建了多少实例,类的静态成员在内存中只占同一块区域.   第二:C#静态方法:     (1)C#静态方法属于类所有,类实例化前即可使用. (2)非静态方法可以访问类中的任何成员

静态方法与非静态方法的区别

转自:http://joe5456536.blog.163.com/blog/static/8537477320117136658629/ http://www.cnblogs.com/devinzhang/archive/2012/04/27/2473570.html 我知道静态变量的使用要很小心,因为它在每个对象中是共享的.但是对于静态方法我的认识只局限于下面: ● 生命周期(Lifecycle): 静态方法(Static Method)与静态成员变量一样,属于类本身,在类装载的时候被装载到

C#中静态方法和非静态方法的区别

静态方法和非静态方法的区别: 1.静态方法不需要类实例化就可以调用,反之非静态方法需要实例化后才能调用: 2.静态方法只能访问静态成员和方法,非静态方法都可以访问: 3.静态方法不能标记为override,导致派生类不能重写,但是可以访问: 4.静态成员是在第一次使用时进行初始化.非静态的成员是在创建对象的时候,从内存分配上来说静态是连续的,非静态在内存的存储上是离散的,因此静态方法和非静态方法,在调用速度上,静态方法速度一定会快点,因为非静态方法需要实例化,分配内存,但静态方法不用,但是这种速

静态方法与非静态方法

C#的类中可以包含两种方法:C#静态方法与非静态方法.让我们来看看最直观的差别:使用了static 修饰符的方法为静态方法,反之则是非静态方法.下面我们分四个方面来看看C#静态方法与非静态方法的差异:C#静态方法与非静态方法比较一.C#静态成员:①静态成员属于类所有,非静态成员属于类的实例所有.②每创建一个类的实例,都会在内存中为非静态成员新分配一块存储:静态成员属于类所有,为各个类的实例所公用,无论类创建了多少实例,类的静态成员在内存中只占同一块区域.C#静态方法与非静态方法比较二.C#静态方

[转]C#静态方法与非静态方法的比较

转自:http://www.cnblogs.com/NothingIsImpossible/archive/2010/07/28/1786706.html 1:C#的类中可以包含两种方法:C#静态方法与非静态方法. 2:那么他们的定义有什么不同呢?他们在使用上会有什么不同呢? 让我们来看看最直观的差别:使用了static 修饰符的方法为静态方法,反之则是非静态方法. 3:下面我们分四个方面来看看C#静态方法与非静态方法的差异: C#静态方法与非静态方法比较一.C#静态成员: ①静态成员属于类所有

转 C#中静态方法与非静态方法区别比较

C#静态方法与非静态方法的区别不仅仅是概念上的,那么他们有什么具体的区别呢?让我们通过本文向你做一下解析. C#的类中可以包含两种方法:C#静态方法与非静态方法.那么他们的定义有什么不同呢?他们在使用上会有什么不同呢? 让我们来看看最直观的差别:使用了static 修饰符的方法为静态方法,反之则是非静态方法. 下面我们分四个方面来看看C#静态方法与非静态方法的差异: 比较一.C#静态成员①静态成员属于类所有,非静态成员属于类的实例所有.②每创建一个类的实例,都会在内存中为非静态成员新分配一块存储

静态方法vs非静态方法

静态方法vs非静态方法 我的理解:静态方法和非静态方法设计之初的目的就是前者是针对类,也就是某一种 对象集体所拥有的,而非静态方法是针对某一个对象的.在引用静态方法时,可以使用 对象名加前缀,也可以使用类名加前缀. 编程人员需要关注的几点 静态方法                       非静态方法                 调用过程 类名.方法名() 对象名.方法名() 生命周期 整个程序的运行周期 对象的生命周期 内存驻留 常驻内存 不常驻内存 使用频率 谨慎使用 推荐 编程人员不

Java中堆、栈,静态方法和非静态方法的速度问题

       一.堆和栈的速度性能分析 堆和栈是JVM内存模型中的2个重要组成部分,自己很早以前也总结过堆和栈的区别,基本都是从存储内容,存储空间大小,存储速度这几个方面来理解的,但是关于堆和栈的存储速度,只知道堆存储速度慢,栈存储速度快,至于为什么堆比栈的存取速度慢,并没有特别深入的研究,从网上也找了很多资料,但很多理由并不太认同,这里也列举一些,并结合自己的理解来分析,如果不正确欢迎指正. 1.从分配的角度分析 java中栈的大小和生命周期在编译期间就确定了的(可以参考之前写的一篇JVM内存

c#静态方法和非静态方法区别

c#静态方法和非静态方法区别 C#的类中可以包含两种方法:C#静态方法与非静态方法.那么他们的定义有什么不同呢?他们在使用上会有什么不同呢?让我们来看看最直观的差别:使用了static 修饰符的方法为静态方法,反之则是非静态方法. 比较一.C#静态成员: 静态成员属于类所有,非静态成员属于类的实例所有. 每创建一个类的实例,都会在内存中为非静态成员新分配一块存储:静态成员属于类所有,为各个类的实例所公用,无论类创建了多少实例,类的静态成员在内存中只占同一块区域. 比较二.C#静态方法 C#静态方