请问vb.net 2005中, public 与 friend 声明的区别是什么?他们的用途各在什么地方?

如果不是很严格的话,我是不是可以这么理解:如果我不打算做一个COM的组件,如果我并不打算在程序外部来访问程序内部的数据的话,就是说我只打算做一个封闭的程序的话,frien... 如果不是很严格的话,我是不是可以这么理解:

如果我不打算做一个COM的组件,如果我并不打算在程序外部来访问程序内部的数据的话,就是说我只打算做一个封闭的程序的话,friend其实是可以替代public的??
展开
 我来答
甄膝
2006-11-24 · TA获得超过385个赞
知道小有建树答主
回答量:83
采纳率:0%
帮助的人:0
展开全部
修改窗体模块或者类模块中的一个过程的定义,使得该过程可以被类外的模块调用,但必须是在定义该类的工程的部分内。Friend 过程在标准的模块中是不能使用的。

Friend 只能出现在窗体模块和类模块中,并且只能修改过程的名称,不能修改变量或者类型。一个类中的过程可以访问某个工程所有其它类的 Friend 过程。Friend 过程不会出现在类的类型库中。一个 Friend 过程不能被后期绑定。

Friend 示例
当下面的代码被放置在一个类模块中时,该段代码会使得成员变量 dblBalance 对该工程中的类的所有用户来说都是可访问的。类的任何用户都可以获得该变量的值;但是只有工程内的代码可以对该变量赋值。

Private dblBalance As Double

Public Property Get Balance() As Double
Balance = dblBalance
End Property

Friend Property Let Balance(dblNewBalance As Double)
dblBalance = dblNewBalance
End Property

说得很清楚了。

另外,Friend类型过程的执行速度要明显快于Public类型。Friend型过程没有处理汇集和拆装代码的消耗(Public过程可以从当前工程外被调用,因此COM必须要来回地汇集数据)。 但是在多数情况下,这些时间差别是不明显的,特别是程序中包含一些复杂和耗时的语句时。 即使这样,Friend型过程仍有其他的优势高于Public类型,比如:接受和返回在BAS模块中定义的UDT变量的能力。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式