.NET 中类和对象在内存中生存期问题,ASP.NET 数据库访问组件之应用类用静态方法和实例方法的区别?
知道“类是对象的模板,类在对象产生前加载”,但是问下——
1、类和对象在内存中的各自“形式”和关系?
2、实例化对象后,如果显式释放对象,那么类在内存中的信息(所占内存)是不是也立即释放?
3、直接调用静态方法,类加载后什么时候从内存中消失?——就是下一次调用静态方法或者实例化对象是继续用内存中的“模板”,还是重新加载???
4、对以上 1 2 3的疑惑,.dll中的元数据等于网站中代码文件的关系?
我知道编译后生成.dll文件,生成后把代码文件中的类文件(就是我们在网站中的.cs文件)删除了,应该不会影响程序运行,那么从.dll文件和内存中创建对象或者调用静态方法,具体发生了神马?先后顺序和关系是?
5、小弟对以上问题一直没认真考虑过,也不敢妄自推断,现在就是介于以上问题,碰到了下面这件事:
利用类来实现数据库访问(就是asp.net中的数据库访问组件=数据包类(代表table)+存储过程+应用类(执行具体操作)),看书上是使用了实例方法(分别是增删查改),还有一个代表连接字符串的实例字段(通过web.config获得,并在构造函数中初始化)。
然后书上(ASP.NET4.0高级编程,说是圣经那个)说:如果是采用静态方法实现增删查改,灵活(不用new)但会在每次调用方法时都要访问web.config文件?
因为书上没给程序,我目测它是说在(静态)类定义中,将静态字符串直接声明并初始化为web.config中相应的connectionString,那么这样子(而不是在静构中初始化)真的会在调用每个静态方法(其中都用到连接字符串创建连接并访问获得数据)时都会去访问web.config文件吗?
感觉像控制台那样直接从键盘读入数据的数据就直接可以一直使用(除非代码改变),所以为什么不是在类加载时就给静态字段一次赋值,后面方法调用都用那个(而不是每次都重新去读)。
如果在静态类定义中只声明字符串变量,然后在静态构造函数中让它等于web.config中的值,就不用以后调用中都去读而是一直用那个共享的静态字段值吗?就像实例字段在实例构造方法中初始化那样。
如果将上面的数据库操作类按书上的实现为实例方法操作,但也是在类定义中直接声明并初始化为web.config中的链接字符串,是不是也要在每次(实例方法调用)访问它时都要去读?
上面是我的问题,现在都怀疑是把书上那段话理解错了还是别的....