licongjie的博客

专心、专注、专业
随笔 - 26, 文章 - 1, 评论 - 207, 引用 - 1
数据加载中……

何时用静态方法

最近一直困挠于这个问题,看了Petshop4.0 ,有一个sqlhelper里面的方法全部为静态方法,用起来确实是方便。在业务层,也通过
private static readonly IItem dal = PetShop.DALFactory.DataAccess.CreateItem();使得在使用的时候,不用再new。
而你同时会发现,在.net的其它好多地方,都用到了静态方法,特别是2.0新增加的特性,membership里,不管是新建用户,修改,获取等等都是通过静态方法来实现的。如果这样的话,那我在业务层里,进行数据操作的时候,也全部都可以用静态方法来实现,对于数据的更新,创建,获取来说,应该问题也不大吧。
可这个也让我非常困惑,如果这些可以用静态方法的话,那使用的时候不用new一个新实例,不是更省力?
到底在这里能用静态方法吗?还是......
真的是好困惑,大家如果对这个有比较清晰的概念,希望能指点迷津。

posted on 2006-08-08 14:25 李.net 阅读(588) 评论(6)  编辑 收藏 所属分类: C# & ASP.NET

评论

#1楼    回复  引用  查看    

我一直都是在用静态方法,感觉很好
而每次只为了调用一个方法就需要把整个类实例化一次,确实很累
2006-08-08 15:03 | aspnetx      

#2楼 [楼主]   回复  引用  查看    

可是问题就是这样的感觉不是很好,好象把OO给颠覆了一样
2006-08-08 15:08 | 李.net      

#3楼    回复  引用  查看    

我觉得常用的才用静态的,毕竟要耗资源的
2006-08-08 17:33 | feiyun0112      

#4楼    回复  引用  查看    

看来我们的困惑都差不多=-=
2006-10-10 16:27 | 兰亭      

#5楼    回复  引用  查看    

我也是,看了petshop的sqlhelper,发现里面都是静态方法,这样安全吗?
2006-11-08 12:34 | khyaaa [未注册用户]

#6楼    回复  引用  查看    

@khyaaa
静态方法本身并不会不方便,只有静态方法中使用了静态变量时,才可能会执行错误,如下例子:
public class Test
{
static int i = 0;
static public int GetZero()
{
return i;
}
static public setITo3()
{
i = 3;
}
}
如果先调用了Text.SetITo3()方法,然后再调用GetZero()得到0必然会出错.而这也不是静态方法的错,只是程序写的有问题,当然了我的这个例子,问题非常明显.
2007-03-08 13:54 | 玉开