关于Me和MyBase的问题?
Class A
Public Enum Type
A = 0
B = 1
End Enum
Public Sub MethodA (){....}
Class SubA 继承 Class A
引用Type时,写成Me.Type.A 和 MyBase.Type.B 和 A.Type.A 和 Type.A 有什么区别吗?
MyBase.MethodA() 和 Me.MethodA() 和 MethodA() ,又有什么区别?
个人认为:MethodA() 就是 Me.MethodA()
写MyBase和Me,或不写,有影响吗?速度?
不解,望高人开解
问题点数:20、回复次数:6Top
1 楼xiayule(下雨)回复于 2005-02-03 10:33:51 得分 0
me 指的是类本身的实例
myBase指的是类本身的实例的基类,
在类中,好像不能直接使用A.type.A,没有见过。
me.type.a 和 mybase.type.a一样
Top
2 楼xufan_1976(许梵)回复于 2005-02-03 10:38:25 得分 10
如果你在SubA中没有重载过Type和MethodA的话
你怎么写都是一样的,写不写也都是一样的,最终调用的都是Class A中的Type和MethodA
但如果你在SubA中重载过Type和MethodA的话
那么,以MyBase引用的都是调用父类也就是Class A中的Type和MethodA
而以Me引用或干脆不写的,都是调用子类也就是SubA中的Type和MethodA
至于速度么就不清楚了
但是既然用.net,还在乎这么点速度么
怎么方便怎么用喽Top
3 楼qzj(SoldierQ)回复于 2005-02-03 10:39:10 得分 10
MethodA()和Me.MethodA一樣,沒區別。
如果在SubA中複寫了A中的MethodA方法,則MyBase.MethodA()調用父類中的方法,而Me.MethodA調用自身方法。
在自身類中,Me可以不寫,不過寫了更容易讀懂代碼。需要調用父類方法的話(一般都是在子類複寫父類方法並需要調用父類方法的時候),MyBase一定要寫。
比如:
Class SubA
sub New()
mybase.new()
'your code here
end sub
End Class
你子類的初始化方法,如果父類的New方法中有代碼,你這裡不作對父類的初始化,那麽父類的初始化代碼並不會因爲你的繼承關係而自動得到執行。Top
4 楼kikosisi(kikosisi)回复于 2005-02-03 14:34:38 得分 0
只是继承,没有重载
看来都一样,写法上怎么统一
写Me 还是MyBase ,还是不写
哈哈哈Top
5 楼sugarshop(SugarXu)回复于 2005-02-03 14:48:09 得分 0
一样吗? 怎么会一样Top
6 楼xufan_1976(许梵)回复于 2005-02-04 08:57:23 得分 0
只是继承,没有重载
个人建议还是写上MyBase吧,反正结果都一样,也不在乎多这么几个字母吧,呵呵呵
读起来也方便,一目了然是父类的方法
也为以后重载时不会产生混淆
比如你如果不写的话,以后有地方想重载
那么你其他不写MyBase的地方也会调用你重载的那个方法,而不是父类的方法了
Top




