当前位置:首页 » 软件开发
开发技术指南» 文章正文
    引言: C++编程人员容易犯的10个C#错误 我们知道, C#的语法与C++非常相似,实现从C++向C#的转变,其困难不在于语言本身,而在于熟悉.NET的可管理环境和对.NET框架的理解。
 

 

 ·asp.net datagrid实现多层表头     »显示摘要«
    摘要:using system;using system.collections;using system.componentmodel;using system.data;using system.drawing;using system.web;using system.web.sessionstate;using system.web.ui;using system.web.ui.webcontr......
 ·webconfig的设置节点说明     »显示摘要«
    摘要:有助于深入理解webconfig<?xml version="1.0" encoding="utf-8" ?><configuration> <appsettings> <add key="connectionstring" value="user id=sa;initial catal......


C++编程人员容易犯的10个C#错

  【推荐阅读:Using a Custom Actio

c++编程人员容易犯的10个c#错误

我们知道, c#的语法与c++非常相似,实现从c++向c#的转变,其困难不在于语言本身,而在于熟悉.net的可管理环境与对.net框架的理解. 尽管c#与c++在语法上的变化是很小的,几乎不会对我们有什么影响,但有些变化却足以使一些粗心的c++编程人员时刻铭记在心.在本篇文章中我们将讨论c++编程人员最容易犯的十个错误. 陷阱1: 没有明确的结束方法 几 乎可以完全肯定地说,对于大多数c++编程人员而言,c#与c++最大的不同之处就在于碎片收集.这也意味着编程人员再也无需担心内存泄露与确保删除所有 没有用的指针.但我们再也无法精确地控制杀死无用的对象这个过程.事实上,在c#中没有明确的destructor. 如果使用非可管理性资源,在不使用这些资源后,必须明确地释放它.对资源的隐性控制是由finalize方法(也被称为finalizer)提供的,当对象被销毁时,它就会被碎片收集程序调用收回对象所占用的资源. finalizer 应该只释放被销毁对象占用的非可管理性资源,而不应牵涉到其他对象.如果在程序中只使用了可管理性资源,那就无需也不应当执行finalize方法,只有 在非可管理性资源的处理中才会用到finalize方法.由于finalizer需要占用一定的资源,因此应当只在需要它的方法中执行 finalizer. 直接调用一个对象的finalize方法是绝对不允许的(除非是在子类的finalize中调用基础类的finalize.),碎片收集程序会自动地调用finalize. 从语法上看,c#中的destructor与c++非常相似,但其实它们是完全不同的.c#中的destructor只是定义finalize方法的捷径.因此,下面的二段代码是有区别的: ~myclass(){// 需要完成的任务}myclass.finalize(){// 需要完成的任务base.finalize();}

错误2:finalize与dispose使用谁? 从上面的论述中我们已经很清楚,显性地调用finalizer是不允许的,它只能被碎 片收集程序调用.如果希望尽快地释放一些不再使用的数量有限的非可管理性资源(如文件句柄),则应该使用idisposable界面,这一界面有个 dispose方法,它能够帮你完成这个任务.dispose是无需等待finalize被调用而能够释放非可管理性资源的方法. 如 果已经使用了dispose方法,则应当阻止碎片收集程序再对相应的对象执行finalize方法.为此,需要调用静态方法 gc.suppressfinalize,并将相应对象的指针传递给它作为参数,finalize方法就能调用dispose方法了.
...   下一页

    摘要:使用asp.net web服务代理的url行为属性郑佐 2005-4-6 在vs.net里调用asp.net web service的时候,默认生成的代理类的url行为是使用静态值,如果web 服务进行转移,那就有可能会出现不能访问的情况,需要对web服务重新引用生成新的代理类,这对程序部署带来许多不便,解决办法就是设置url行为使用动态值,对于许多人没有去关注所以可能都不知道有这一项功能,包括我......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE