我在类中使用它来防止使用函数、方法或属性outside我的集会。
从装配体内部,Friend
and Public
做同样的事情,因此,它是friendly给开发商。但是,如果从外部程序集中使用该类,则标记的所有内容Friend
将不可用,而Public
将。
C# 等效项是internal
。名字internal
可能给出了比以下更好的定义Friend
其预期用途。
这是一个任意的例子。我有一个 DLL,其中包含一堆自定义控件,它们都需要绘制某些图像:
Friend Class ControlDraw
Public Shared Sub DrawArrow(ByVal g As Graphics, ByVal r as Rectangle, _
ByVal ad As ArrowDirection, ByVal ac As Color)
//' Draw Special Arrow:
End Sub
End Class
我可以在项目中的所有控件中使用此代码。但是,当我发布 DLL 并让其他人使用它时,最终用户无法使用 DrawArrow 函数,只能使用项目内部的控件。
为什么要这样做?
如果它是Public
,那么我永远无法在不破坏该函数的任何使用者的情况下更改参数。但由于这是我自己的方法,我可以为 BackColor 或其他参数添加另一个参数,并更新我自己的项目中使用它的所有控件。
我基本上是说,一个Friend
类或函数只是让我担心,而不是最终用户担心。一旦你做了某事Public
对于外界来说,你会失去一点对它的控制。
还从一个埃里克·利珀特 (Eric Lippert) 回答使用Internal https://stackoverflow.com/a/3016168/719186:
内部的重点并不是让鲍勃的生活变得困难。它允许您控制项目 A 在功能、生命周期、兼容性等方面做出的昂贵承诺。