最近在看DZ的.NET版本...看他里面用到了很多静态类...我的问题是...在一个项目中...应该怎样去控制静态类...或者说哪些地方可以用.哪些地方不能用..各位大牛...能否分享下在开发中的一些经验..

解决方案 »

  1.   

    静态类-->全局共享类。
    这种细节上的还是多google。这种问题讨论的太多了
      

  2.   

    嗯.就是讨论的太多...所以谷歌出来的也是很杂的..
    问这问题也主要是想大牛们在项目中是怎么的去灵活用这个static的.有点迷茫.
      

  3.   

    嗯.就是讨论的太多...所以谷歌出来的也是很杂的..
    问这问题也主要是想知道大牛们在项目中是怎么的去灵活用这个static的.有点迷茫.
      

  4.   

    静态类里面 只能放静态变量和静态方法,这些方法不需要实例化类就可以调用,
    使用静态方法变量的好处在于:一个是应用程序的生命周期、一个是应用程序域的生命周期。还是有一定的区别,最明显的static类不会像application那样大量的占据服务器资源。至于哪里可以用哪里不可以用,应该怎么用,这个就要根据具体的项目来说了。
      

  5.   

    楼主,其实在你使用static类,方法,变量时,你就该考虑,为什么要用它,它能给你带来哪些方面的提高。如果用了却对项目没有什么帮组不用也罢。
      

  6.   

    个人感觉static就相当于一个全局变量一样,如果用的地方多,比如一个XML文件里的数据要经常用,就可用把数据读出放入static中,当然这个数据不能太大
      

  7.   

    这是一个经常被时时提出来的问题,很多时候我们以为理解了、懂了,但深究一下,我们却发现并不懂。方法是我们每天都在写得,很多程序员大多都使用实例化方法,而很少使用静态方法,问原因也说不出来所以然,或者简单的回答两者定义的区别,静态方法不需要new就可以使用 实例化方法需要new了以后才可以使用。我们真的理解了吗?从实际项目开发说起,这里有开发项目的三种方式:开发项目中把BLL和DAL分开,在BLL调用DAL的代码。一、在DAL中使用静态方法,不创建实例直接调用(大概有很多人都使用这种方式开发 )class DAL
    {
    public static string GetUserName(...);
    }
    在BLL中调用:
    DAL.GetUserName();二、在DAL中使用实例方法,采用静态成员模式(或Singleton)通过实例来调用:
    class DAL
    {
    public static readonly DAL dal = new DAL();
    public string GetUserName(...);
    }
    在BLL中调用:
    DAL.dal.GetUserName();三、在DAL中使用实例方法,每次调用之前先创建DAL对象的实例:
    class DAL
    {
    public string GetUserName(...);
    }
    在BLL中调用:
    DAL dal = new DAL();
    dal.GetUserName();---------------------------------------------------------------开发方式一:我以为在一些情况下(比如 调用多个数据库、GetUserName(...)内部处理操作部分)会出现线程安全的嫌疑。这种开发方式不用New出对象,所以很普遍。开发方式二:应该多是应用在cs模式下,DAL在整个项目只会有一个对象存在,如果出现在B/S 我想不能兼容多种问题情况。而且也有线程安全的问题。开发方式三:应该是普遍使用的,能够兼容各种问题,也不会有线程不安全的嫌疑出现。特别说明一下:在MS的pet3.0以前的版本 都采用了方式二,而到pet3.0和以后的版本 都采用了方式三,而且特别在开发说明文档中明确的解释了一下。我想应该是从兼容性上考虑的,从性能上方式二并不比方式三真正的高多少。
      

  8.   

    个人的思维还是有局限性的.有时候就蒙掉了.有时候我就会想把经常用到的数据库操作类写成static...不经常会调用的就不用..不知道这样有没有什么缺陷...还是说这个想法很荒谬...
      

  9.   

    不静态每次都new下,就多占了块内存空间,而static只占一块内存空间
      

  10.   

    静态的东西在多线程的时候是最麻烦的,莫名其妙的错而且无法调试,我还受到过深刻教训。
    我用了单例模式,操作数据库用的是C#3.5的Linq,这样就会只存在一个操作数据库的实例,但是问题来了,当偶然抛出一个操作数据库的异常之后,其他的的除了查询正常之外,update,insert,delete 操作都会抛出同样的异常,我还以为是服务器的配置问题呢郁闷,测试后估计是Linq在抛出异常之后它的状态会一直保持异常。后来全部改成new出一个实例,问题没有了。
    慎用啊老兄
      

  11.   

    关于多线程操作.我都是采用实例化的.现在我的问题是在asp.net中
      

  12.   

    asp.net 使用静态对象不算太多~~~比如你在程序里需要一个状态,这个状态记录着某些操作的状态
    这个时候你就可以使用静态对象
      

  13.   

    为什么sqlhelper用的是静态的方法?
      

  14.   

    能不用就不用,我宁可滥用Session也不会滥用Static。基本上,数据库连接对象的操作 有可能会用,其他的很少。具体还是看需求,这个不能说死的。你要是做偏向 底层,通讯 这种的项目,静态类相对的多一些。
    Winform 或者aspx 的上层应用,基本是没有什么静态类的
      

  15.   

    静态类-->全局共享类。不用NEW构造对象。
    非静态类可以直接调用静态类的(方法或者属性)等等。
    静态类只能调用静态类的方法或者属性。