在vb.net中使用朋友或公共表单会更好吗?每个有什么好处?
我注意到当你导入一个vb6项目时,表单会以朋友的形式出现,但是当你在vb.net中添加一个新表单时,它是公开的。但是,我没有看到他们的工作方式有任何不同,所以我必须遗漏一些东西。
答案 0 :(得分:7)
在我看来,即使默认是公开的,我也会在C#中使用Friend
(又名internal
)。即使我认为VB默认为受保护,我也会在窗体上使用private for controls。一般来说,将类型/成员访问视为您妻子的胸部。除非暴露它们有一些好处(比如退出超速罚单或制作共同对话框等等),否则请将它们与其他人隐藏起来。
内部制作的一个缺点是你必须做一些额外的工作才能将它们公开给你的单元测试。有关详细信息,请参阅InternalsVisibleToAttribute。
答案 1 :(得分:4)
VB6不支持从类库中导出表单。因此转换代码的自然映射是Friend。但是,VB.NET没有这样的问题。使用Public很好,假设公共方法参数中的任何公开类型都是Public。很容易找到,编译器会告诉你。
答案 2 :(得分:3)
如果表单为Public
,则可以从当前程序集(.exe)外部访问它。如果它是Friend
那么它只能从程序集中访问。相同的access level规则适用于其他VB.NET类的Forms。
我想不出一个常见的Winforms情况,你需要公共表单,因为他们通常在同一个程序集中让朋友足够好。除非你的表格散布在不同的集合中,否则他们需要互相引用。
也许编写导入工具的Microsoft团队决定使用Friend,因为所有表单都来自同一个经典项目,而Visual Studio(New Item)团队决定使用Public,因为.NET方式更多地涉及模块化项目。它可能就是那么简单。