机房验收总结

this.close()与this.hide()区别

close与hide
       close:关闭窗体,该窗体占用的资源在下次垃圾回收时会被释放
       hide:隐藏窗体,相当于visible=false效果,该窗体占用的资源不会被释放
close与Application.Exit
       Application.Exit:所有的消息必须终止,所有的消息都处理完后关闭所有的应用程序窗口
       close:关闭窗体,如果该窗体是应用程序的主启动窗体,效果和Application.Exit一样,关闭整个应用程序

new分配空间

       需要new时是对于复杂类型(本人认为是引用类型)而言的,这时内存分配是在堆区,而不new的类型(本人认为是基础数据类型)的对象内存分配在栈区,空间空间小,当当前所在函数执行完后会自动释放内存;而new 的对象所占内存需要手动释放,否则会造成内存泄露
以上两点都用到了垃圾回收机制,明白了该机制,相信你的编码水平又提升了一截

关联和依赖区别

      依赖:类与类之间的联接,是一种依赖关系,具有偶然性,临时性。类A依赖类B,表示类A依赖另一个类B的定义,但是类A没有类B的属性。如一个人(Person类)可以买汽车(Car类),这就是Person类依赖Car类的定义,因为person类引用了Car,但Person类中并没有Car类型的属性。我理解的是:依赖表现了一种调用关系
       关联:类与类之间的联接,是一种依赖关系,具有长期性,且双方的关系是平等的。与依赖不同的是:类A有类B的属性。
       总结:我和同事从公司骑自行车去公园,那么我(或同事)和自行车是一种依赖关系,而我和同事是一种关联关系。因为依赖是一种弱关联,我可以选择别的交通工具去公园,这种关系具有偶然性(恰巧这次选择的是自行车),依赖可以说一个类用到了另一个类,但是和另一个类的关系不是太明显。而关联这种关系很明显,我和同事,老师和学生是一种很明显的关系
七层图关系理解???

泛型

为什么要使用泛型???
       相信在写代码时会遇到这样的问题:我已写了一个参数为int类型的方法A,但现在我需要一个处理参数为string类型的方法,于是赋值了一下方法A的代码,只是把参数变为string类型的方法B,但两者实现的过程即方法体是一样的,总感觉写的代码不简洁,如果我还需要处理参数类型为,char、bool、等等类型的,如果这样岂不是累死了,这时有一种解决方案:就是将参数类型改为object类型,这样就可以写一个方法但可接收任何类型的参数了,但是会出现如下问题:

  • 当方法对值类型做处理时,要有装箱和拆箱的操作,这样在托管堆上分配和回收大量的变量,若数据量大,则性能损失非常严重;
  • 当方法对引用类型做处理时,要用到数据类型的强制转换操作,增加处理器的负担

       这时出现了泛型,可解决以上问题:泛型·用一个通用的数据类型T代替object,在类实例时指定T的类型,运行时自动编译为本地代码,运行效率和代码质量都有很大提高,并且保证数据类型安全。
       泛型类实例化的理论:C#泛型类在编译时,先生成中间代码IL,通用类型T只是一个占位符。在实例化类时,根据用户指定的数据类型代替T并由即时编译器(JIT)生成本地代码,这个本地代码中已经使用了实际的数据类型,等同于用实际类型写的类,所以不同的封闭类的本地代码是不一样的。按照这个原理,我们可以这样认为:泛型类的不同的封闭类是分别不同的数据类型,例:Stack和Stack是两个完全没有任何关系的类,你可以把他看成类A和类B,这个解释对泛型类的静态成员的理解有很大帮助。(以上查资料得来)

IList与List的区别

       IList:是泛型接口,是ICollection泛型接口的子代,是所有泛型列表(List就是一个泛型列表)的基接口,定义了一些操作方法,但这些方法自己不能实现,需别人去实现(相当于普通接口),仅作为集合数据的承载体
       List:是泛型类,实现IList<>定义的方法

IList <Class1> IList11 =new List <Class1>(); //第一句
List <Class1> List11 =new List <Class1>();   //第二句
这两句的区别: 第一句: - 创建了一个`List ()`对象,且可以使用`List`的功能,进行相关操作只能使用`IList `有的方法,不获取事项这个接口的类List的其它方法和属性,有效节省空间 第二句: - 创建了一个基于接口`IList `的对象的实例,但这个接口是由`List`实现的 - 接口派生出来的抽象类可转换为接口的实例,体现了**里氏替换原则** - 这也体现了**低耦合**,因为接口是最底层了,所以IList对象可指向任意一个IList接口的实现,当需要改变时,只需该=后面的内容 - 对的
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 35
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 35
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值