.NET 中类和对象在内存中生存期问题,ASP.NET 数据库访问组件之应用类用静态方法和实例方法的区别?

Trophy_Everhad 2012-05-11 09:56:21
知道“类是对象的模板,类在对象产生前加载”,但是问下——

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中的链接字符串,是不是也要在每次(实例方法调用)访问它时都要去读?



上面是我的问题,现在都怀疑是把书上那段话理解错了还是别的....





...全文
97 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

62,268

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧