我有一个基本的WinForm项目,其中启动表单声明为Public Sub New()
。
ReSharper告诉我可以将New()构造函数设为私有。这样做的后果是什么?这会改变表单的加载方式吗?还是只是为了使表单不能从另一个项目创建?
我在获取有关将入口点设为私有的特定信息时遇到了麻烦。从逻辑上讲,我认为如果入口点是私有的,则该表单将永远不会加载,因为无法构造它。
答案 0 :(得分:1)
在VB.NET中,如果您将构造函数明确声明为私有,则不能创建以下形式的实例:
Private Sub New()
' This call is required by the designer.
InitializeComponent()
' Add any initialization after the InitializeComponent() call.
End Sub
但是,如果不为Sub New
设置访问修饰符,它将是公开的:
Sub New()
' This call is required by the designer.
InitializeComponent()
' Add any initialization after the InitializeComponent() call.
End Sub
答案 1 :(得分:1)
还有另外一个后果:您的表单将从My.Forms集合中消失,并且无法隐式创建/使用/打开此表单。如果您使用的是My.Forms(无需显式调用My.Forms。集合的事件),则必须自己创建自己的实例。
其他答案和评论中已经提到了其他后果: