[英]vb.net require assignment on declaration
有没有办法要求在对象类的声明中为其赋值?
例如,如果我有:
Dim MyObject As New Library.ObjectClass
MyObject = FunctionThatReturnsObject(Parameter)
我可以更改ObjectClass以便不能用“ New”声明它,并且必须用作:
Dim MyObject As Library.ObjectClass = FunctionThatReturnsObject(Parameter)
我知道我可以为ObjectClass构造一个构造函数,该构造函数调用FunctionThatReturnsObject,但是我一直使ObjectClass实例完全为空,因为我不理会声明它们而不分配它们。
有办法防止这种情况吗?
有办法防止这种情况吗?
不是完全。 您可以做的一件事是将构造函数Private
,而提供一个Public Shared
函数,该函数返回已构造的对象。 有时候这是有用的事情,但是并不能解决您的实际问题:确保正确初始化您类型的每个对象。
由于VB默认初始化所有已声明(但未初始化)的对象,因此无法强制执行其他初始化。
但是,您发布的示例代码实际上并没有任何意义:防止以下代码很简单:
Dim MyObject As New Library.ObjectClass
MyObject = FunctionThatReturnsObject(Parameter)
只需声明一个带参数的构造函数,或将构造函数设为私有。 这将阻止用户使用New ObjectClass
。
另一种方法是使用在类上定义的共享函数。 共享功能将有权访问同一类的私有成员。 获取新MyObject的唯一方法是调用MyClass.FunctionThatReturnsObject()
Public Class MyClass
Private _parameter As String
Private Sub New()
End Sub
Private Sub New(parameter As String)
_parameter = parameter
End Sub
Public Shared Function FunctionThatReturnsObject() As MyClass
Dim myObject As New MyClass("a parameter")
'Or you could manipulate the private paraemters directly...
'myObject._parameter = "a parameter"
Return myObject
End Function
End Class
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.