VB.net学习笔记之基础部分之二

egrid 2005-01-27 10:33:23
41、Catch语句可以带when表达式,这是一个好过C#的特性。

42、但但try finally endtry,不要catch语句 也是可以,用来提供统一的退出代码,但是不捕获错误。

43、on error goto/resume会降低代码运行速度5倍。

44、引发嵌套异常 ,throw new exception("新异常说明",ex), ex.getbaseexception取得最底层的异常。

45、自己的代码尽量少地用引发异常来处理异常,用不同的返回值更好一些,异常通常在调用非自己定义的过程的时候用。

46、在最终发行的程序中,选择项目属性“取消整数溢出检查”可以提高整数预算速度20%到40%

47、对于过程是引用参数,如果需要传值进行,可以在调用过程用括号将参数括起来,例如 pf((X)),这样X就不会被目标函数改变。

48、2L long型,2I Integer型,2D Double型 ,2S Short型,2@ Decimal型,2! single型

49、属性可以作为引用参数传递,而且可能被改变。

50、用readonly和writeonly关键词定义只读、只写属性,readonly也可以用于字段。

51、带参数的属性还可以用可选参数,其实和过程也没啥差别,C#却不行啊,好!

52、使用关键词Default,可以将带参数的属性设为默认属性。

53、爽啊,有参数的属性竟然可以重载,C#太差了,哈哈哈哈,选择VB.net没错

54、new过程引发异常,可以阻止创建对象,最好 不要这样,用private作用域的构造函数,然后用public共享过程创建对象更合理一些。

55、类内部可以使用自己的属性,类自己的代码也应该坚持使用属性,而不是使用私有变量进行取值、赋值,这样就可以有统一的验证代码。

56、New过程是唯一能够对只读字段赋值的地方。

58、Finalize方法必须用Protected Overrides来重写。

59、过程用Static关键词创建的变量,能够保持上一次运行的值,这是VB6留下来的吗?

60、有意思的代码,判断某个变量是否是某个类型:
Dim o1 As Object
o1 = 123
If TypeOf o1 Is Object Then 成立的
End If
If TypeOf o1 Is Integer Then 成立的
End If
if IsReference(o1) then 不成立的
end if

61、定义事件够简单的。
Class mycls
Event MyEvent(byval s as string)
sub testevent
raiseevent myevent("我爱陈夏燕")
ed sub
end class

62、厉害,Module代码块也可以有事件。

63、公共的数据用共享字段或属性保存

64、如果只提供私有构造函数,那么类是不能创建实例的。

65、共享构造函数用于初始化共享字段和属性。实例变量也可以用withevents/handles处理共享事件,当然我认为用addhandler处理更好一些。

66、基类可重写成员用overridable修饰,派生类用overrides重写基类成员,如果是同名但签名不同的成员,用overloades.

67、对于已经重写的基类成员,派生类可以用maybase关键词去引用,重写Dispose过程,必须调用mybase.dispose

68、如果基类没有隐式或显式包括一个无参数的构造函数(也就是基类只存在有参数的构造函数),派生类必须定义一个构造函数,且第一行必须是mybase.new(...)

69、没事不要使用overrideable,效率会降低15%

70、派生类调用基类的一个非重写方法时,代码运行在基类中,却出于派生类的上下文中(也就是会调用派生类的重写成员),如果基类代码一定要调用基类成员,用myclass关键词指定.

71、overloads隐藏相同签名的基类成员,而shadows隐藏所有的同名成员,注意这里是隐藏,不是重写。隐藏的成员之间没有任何关系,也就不存在第70条所说的问题。

72、共享成员不能被重写,只能被隐藏,用shadows隐藏。

73、NotInheritable定义不能被继承的类,MustInherit定义必须被继承的类,MustOverride定义必须重写的成员(也就是虚拟方法),有虚拟成员的类必须是MustInherit

74、内部类的代码可以访问外部类的私有成员,共享成员直接访问,实例成员需要一个外部类的实例。私有嵌套类的实例不能被外部类用public定义。

75、构造函数用Friend修饰,将只能在本程序集内创建对象,用private修饰,将不能创建对象(但是可以用一个public修饰共享方法来创建对象,这样就可以在创建对象之前运行某些代码,而且可以很方便地决定能否创建)

76、定义事件的更合理代码,这样可以在派生类中更好地控制事件的触发。
Class mycls
Event MyEvent(byval s as string)
protected overridable sub testevent
raiseevent myevent("我爱陈夏燕")
ed sub
end class

77、接口不能包括变量,而且属性和方法不能带有作用域修饰符。

78、实现接口的类,要访问接口成员,必须先转换为接口变量,但是如果是用public过程实现接口成员,那么可以直接用类访问。

79、directcast只能转换引用类型,而ctype则没有这个限制。

80、派生类重写基类中的实现的接口成员,不需要再用implements.

81、array.sort对数组排序。array.sort(arr,system.Collections.CaseInsensitiveComparer.Default)可以忽略大小写。

82、MemberwiseClone方法复制自己(浅表),注意该方法是Protected作用域。

83、委托赋值的简单方法:
delegate sub onedelegate(byval str as string)
dim delg as onedelegate
delg = address of mysub
delg.invoke("abc") 或者 delg("abc")

sub mysub(byval str as string)
msgbox(str)
end sub

83、委托的Target返回目标对象,如果委托的是共享方法,则返回一个代表目标类的System.Type,委托的Methed返回代表委托方法的System.Reflection.MethodInfo

84、delegate的共享方法combine/remove用来管理多路委托。

85、用GetCustomAttributes/GetCustomAttribute/IsDefined等特性共享方法来检索特性。
...全文
81 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
bluesmile979 2005-01-27
  • 打赏
  • 举报
回复
.net新手,一起学习
bibitou 2005-01-27
  • 打赏
  • 举报
回复
学习中................

16,554

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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