各有各的好处。各有各的应用场合。
但是性能方面静态方法绝对比实例方法来得好。可以写一个循环来调用一下看谁比较快?每秒钟能调用多少次?
这个不一定呀...比如你看msdn 里面的directory 和directoryInfo这两个类,前一个类的方法都是静态的,但是msdn文档却说,如果你需要多次调用directory里面的方法,推荐用directoryInfo的实例方法,因为directory静态方法里面需要校验比较多的东西
directory 和directoryInfo,不能用这个来推论。directoryInfo是经过优化的。做人不能太2.
什么是静态什么是实例,如果A静态方法与B实例方法都完成同样的功能,我建议你使用实例方法,实际上静态方法大多时候可以看成具有通用行为的函数,而是实例方法应该被视作具备优化算法的方案,算是一个子集把,这并不能代表实例优胜于静态,实例方法内部条用静态方法很常见,但理论上可以把实例方法视为比静态更优秀,不知道我这样说你明白与否。
这个不好作评论
.Net Framework 提供的静态方法大多数是线程安全的,但实例方法大多数都不保证线程安全。
性能方面,我测试了一下,实例方法略快一点:
测试代码
class Program
{
class A
{
public void Test()
{
}
}
static void Test()
{
}
static void Main(string[] args)
{
A a = new A();
CodeTimer.Time("Test static methed", 100000000, delegate() { Test(); });
CodeTimer.Time("Test instance methed", 100000000, delegate() { a.Test(); });
Console.ReadLine();
}
}
其中
CodeTimer 类见 http://www.cnblogs.com/eaglet/archive/2009/03/10/1407791.html
测试结果:
Test static methed
Time Elapsed: 1,778ms
Time Elapsed (one time):0ms
CPU time: 1,781,250,000ns
CPU time (one time): 17ns
Gen 0: 0
Gen 1: 0
Gen 2: 0
Test instance methed
Time Elapsed: 1,626ms
Time Elapsed (one time):0ms
CPU time: 1,625,000,000ns
CPU time (one time): 16ns
Gen 0: 0
Gen 1: 0
Gen 2: 0