静态与非静态对程序效率的影响
2009-12-12 13:51
309 查看
在.net里静态类型分成:静态类、静态成员
静态类:一个类里面如果只包含静态成员和静态方法,则该类可以定义为静态类,给类加上static修饰符;
静态成员:静态成员包括静态字段和静态属性,静态成员和类相关联,不依赖于对象而存在,只能由类访问,而不能由对象访问;
静态成员属于类所有,无认创建多少实例对象,静态成员在内存中只有一份;实例成员属于类的实例所有,每创建一个实例对象,实例成员都会在内存中分配一块内存区域;所以静态成员一般用于存放共享的数据段,如数据库连接字符串等。
例如:
static class Card
{
//定义一个静态成员
private static string cardId="2501732";
//静态属性
private static string CardId
{
get{return cardId;}
}
//静态方法
public static void ShowCard()
{
Console.WriteLine(CardId);
}
//访问静态方法
public static void Main()
{
Card.ShowCard();
}
}
静态方法和非静态方法比较:
一、静态类不可实例化,否则会抛出异常,非静态类调用前要实例化,静态成员或静态方法独立实例对象之外,其调用必须通类来实现,如上例中用 Card.ShowCard()来访问静态方法;
二、实例方法比静态方法多传递一个隐含的指针参数,该指针指向该方法所从属的已被实例化的对象。因此在实例方法内可使用this关键字代表所从属的实例对象,而静态方法不可使用this,因为静态方法不针对任何实例对象;
三、性能上,静态方法和实例方法差别不大。所有方法,不管是静态方法还是实例方法,都是在JIT加载类时分配内存,不同的是静态方法以类名引用,而实例方法以对象实例引用。创建实例时,不会再为类的方法分配内存,所有的实例对象共用一个类的方法代码。因此静态方法和实例方法的调用,在性能上的差别微乎其微。
四、静态成员属于类所有,无论创建多少实例对象,静态成员在内存中只有一份,实例成员属于类所有,每创建一个实例对象,实例成员都会在内在中分配一块内在空间。
静态类:一个类里面如果只包含静态成员和静态方法,则该类可以定义为静态类,给类加上static修饰符;
静态成员:静态成员包括静态字段和静态属性,静态成员和类相关联,不依赖于对象而存在,只能由类访问,而不能由对象访问;
静态成员属于类所有,无认创建多少实例对象,静态成员在内存中只有一份;实例成员属于类的实例所有,每创建一个实例对象,实例成员都会在内存中分配一块内存区域;所以静态成员一般用于存放共享的数据段,如数据库连接字符串等。
例如:
static class Card
{
//定义一个静态成员
private static string cardId="2501732";
//静态属性
private static string CardId
{
get{return cardId;}
}
//静态方法
public static void ShowCard()
{
Console.WriteLine(CardId);
}
//访问静态方法
public static void Main()
{
Card.ShowCard();
}
}
静态方法和非静态方法比较:
一、静态类不可实例化,否则会抛出异常,非静态类调用前要实例化,静态成员或静态方法独立实例对象之外,其调用必须通类来实现,如上例中用 Card.ShowCard()来访问静态方法;
二、实例方法比静态方法多传递一个隐含的指针参数,该指针指向该方法所从属的已被实例化的对象。因此在实例方法内可使用this关键字代表所从属的实例对象,而静态方法不可使用this,因为静态方法不针对任何实例对象;
三、性能上,静态方法和实例方法差别不大。所有方法,不管是静态方法还是实例方法,都是在JIT加载类时分配内存,不同的是静态方法以类名引用,而实例方法以对象实例引用。创建实例时,不会再为类的方法分配内存,所有的实例对象共用一个类的方法代码。因此静态方法和实例方法的调用,在性能上的差别微乎其微。
四、静态成员属于类所有,无论创建多少实例对象,静态成员在内存中只有一份,实例成员属于类所有,每创建一个实例对象,实例成员都会在内在中分配一块内在空间。
相关文章推荐
- 静态与非静态对程序效率的影响
- 时钟频率对程序效率影响测试(Platform: ARM ZYNQ 7000 ZP20 Board)
- 多余的Using Namespaces或引用会影响程序的执行效率么?
- 静态库存在依赖时对程序的影响
- php中静态方法static和非静态方法效率对比
- Try Catch到底影响了程序多少效率?
- Console输出影响程序效率
- PHP中的异常处理对程序执行效率的影响
- 程序循环顺序对效率的影响
- gcc -o0 -g -o3对程序效率影响很大
- Java中的异常对程序效率有无影响
- windows/linux避免多线程应用程序在多核间切换,影响程序效率
- ViewState + UpdatePanle害死人,影响程序的效率,应用程序响应速度超慢
- DSP程序中 ,如何完成延时且不影响整体程序的工作效率
- malloc动态申请内存空间对程序效率的影响
- Exception对程序执行效率的影响
- 多余的Using Namespaces或引用会影响程序的执行效率么?(转)
- 如何提高android程序运行效率,程序员在开发过程中应当注 意的一些事项
- 亲测VS2010纯静态编译QT4.8.0,实现VS2010编译调试Qt程序,QtCreator静态发布程序http://www.cnblogs.com/elect-fans/archive/2012/
- 基于s5pv210嵌入式linux使用其他动态、静态库文件程序的交叉编译