分享
 
 
 

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

王朝c#·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

st1\:*{behavior:url(#ieooui) }

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) 与接口 ( 的区别

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有