快精灵印艺坊 您身边的文印专家
广州名片 深圳名片 会员卡 贵宾卡 印刷 设计教程
产品展示 在线订购 会员中心 产品模板 设计指南 在线编辑
 首页 名片设计   CorelDRAW   Illustrator   AuotoCAD   Painter   其他软件   Photoshop   Fireworks   Flash  

 » 彩色名片
 » PVC卡
 » 彩色磁性卡
 » 彩页/画册
 » 个性印务
 » 彩色不干胶
 » 明信片
   » 明信片
   » 彩色书签
   » 门挂
 » 其他产品与服务
   » 创业锦囊
   » 办公用品
     » 信封、信纸
     » 便签纸、斜面纸砖
     » 无碳复印纸
   » 海报
   » 大篇幅印刷
     » KT板
     » 海报
     » 横幅

.Net框架程序设计(一)----进阶

Q1:值类型和引用类型的差别






Q2:值类型的装箱和拆箱

Answer:

装箱是将一个值类型转变为一个引用类型。例如:在ArrayList中add一个结构体的实例。

步骤:

1 从托管堆上为引用类型分配内存。内存的大小为值类型本身的大小加上其他的空间包括一个方式表和一个SyncBlockIndex

2 值类型的字段被复制到托管堆上新分配的对象的内存中

3 返回托管堆中新分配对象的地址作为该对象的引用。



拆箱是为了获得托管堆上对象的元素到栈空间的值类型中。

1获取在托管堆上的被装相的值类型的地址

2从托管堆上复制到栈上的值类型中

用到DirectCast和CType静态方式




Q3:DirectCast和CType的区别

CType在转型比DirectCast强。比如:一个Int32的值类型装箱为Object,拆箱的时候DirectCast只能从Object转型为Int32(作为拆箱的步骤可能更加安全--没有多的转型),而CType则可以从Object转型为Int16(包括了拆箱和转型2个动作)




Q4:类型构造器和实例构造器的区别






Q5:MemberwiseClone浅拷贝过程

uMemberwiseClone创建与当前实例一样类型的新实例,然后复制原始对象的非静态字段。假如字段为值类型的则为则对该字段执行逐位复制。假如字段是引用类型,则复制该引用但不复制被引用的对象;这样,原始对象中的引用和复本中的引用指向同一个对象。

如何实现深拷贝?

实现IClonable接口,Override父类的Clone()函数

Public Function Clone() As Object Implements IClonable

一般的方式:New一个要clone的新对象,将原对象中成员的值赋给新对象的成员,返回该新对象的引用。

较好的办法:将对象序列化到一个System.IO.MemoryStream中,然后立刻对该内存流执行反序列化,从而得到一个新的对象。




Q6:Module与Class的区别

Module实际上也是一种特别的Class。该类的保护级是Friend,该类不包含任何实例构造器,可以防止创建它的实例,方式和变量都声明为Shared。

使用Module是为了实现模块外部代码对模块中的成员的访问。2来是为了早期VB代码移植的方便。




Q7:VB.Net中的参数传递

有两种一种是按值传递ByVal,一种是按引用传递ByRef。按值传递时候会拷贝一份原参数,引用则相称于别名。




Q8:Structure和Class的区别

1 结构是值类型,其实例是在栈上面分配的;而类的实例是在堆上分配的,其引用是在栈空间上。

2 结构不能被继续,类可以被继续。

3 结构的默认成员都为Public,并且其成员没有Protected,不能给变量声明指定初始值,不能定义默认拷贝构造函数和数组初始大小 ;类的变量和常量是Private,其他成员是Public

4 结构从不终止,不会调用Finalize方式;

创建一个Class的实例和创建一个Structure实例的区别

结构是值类型,其实例是在栈上面分配的;而类的实例是在堆上分配的,其引用是在栈空间上。




Q9:如何保证系统中只有一个程序的实例在运行

1 首先获得当前程序在系统中的进程

2 用该进程的名称为参数,从系统中取得与该进程名称相等的所有存在的进程放在Process数组里面。

3 循环该Process数组,假如有Process的执行文件名和当前产生Process的文件名。假如有,则表明工程已经运行,退出即可,没有的话则继承执行。






Q:重写Overrides与重载Overload的区别

Overloads是同一个类中对同名函数不同参数的重载

Overrides是继续类中对父类中标示为Overridable的函数的重写,实现该函数在继续类中特有的功能

Q:Shadows的作用?

当继续类中的方式被声明为Shadows的时候,会使父类中所有与该方式同名的函数被屏蔽掉,不继续在子类中






Q:抽象类(MustInherit-MustOverride)与接口(的区别

抽象类不能被实例化只能被他的继续类实现,接口也不能被实例化,只能被Implements。

抽象类除了方式会MustOverride修饰外,其他和一般的类没有区别;接口的成员只能有嵌套类型、方式、属性和事件。




Q:Equals






Q:String和StringBuilder区别

这个区别有点类氏于JAVA中的String和StringBuffer的区别。




Q:模仿一个ComboBox接口?






Q:标准事件处理程序

系统实例化一个有反映能力的学生,让他去逛商场,这个时候他有可能遇到很多人,当他看到MM的时候,他会流鼻血。

Module Module1

Class CStudent

Public Event SeeingMM

Sub Shopping

RaiseEvent SeeingMM()

End Sub

End Class



Sub stu_SeeingMM() Handles stu.SeeingMM ‘我们定义这个学生看到MM这个事件发生的

‘时候他就流鼻血

Console.Writeline(“流碧血”)

End Sub



WithEvents stu As New CStudent ‘1 系统实例化一个有反映能力的学生



Sub Main()

Stu.Shopping() ‘2 让他去逛商场,

End Sub

End Module




Q:抽象类(MustInherit-MustOverride)与接口(的区别






Q:抽象类(MustInherit-MustOverride)与接口(的区别







返回类别: 教程
上一教程: .Net的注册表操作
下一教程: 如何使用C#访问POP3服务器

您可以阅读与".Net框架程序设计(一)----进阶"相关的教程:
· NET框架程序设计读书笔记(三)--执行程序集代码
· 第十一章 事件[《.net框架程序设计》读书笔记]
· .net框架程序设计读书笔记二(Microsoft .net 框架开发平台体系架构)
· 学习笔记《.NET框架程序设计(修订版)》--第三章 共享程序集 (2)
· 第八章 常数与字段[《.NET框架程序设计》读书笔记]
    微笑服务 优质保证 索取样品