我有类似以下的类:
Public Class Form1
Private d As New Dings("dings")
End Class
Public Class Foo
Public Sub New(ByVal aName As String)
MsgBox("new Foo """ & aName & """")
End Sub
End Class
Public Class Dings
Public Property Name As String
Public Property MyFoo As New Foo(Name)
Public Sub New(ByVal aName As String)
_Name = aName
End Sub
End Class
我希望首先初始化Dings类的Name属性,但是反之,您有什么想法要实现这一点?
我知道,我也可以稍后在构造函数中创建foo对象(作为dings的成员)。
但是我想用这种方式,因为最后在Dings类中实例化了很多单例对象,我只想在一行中创建它们。
问候哦
####### E D I T #############
非常感谢你们俩。我想扩大我的问题:
关于C#,有没有可能按照我自己定义的顺序初始化变量?
最佳答案
为了回答C#问题,C#中的初始化顺序为:
所有内容均以该类型的默认值开头(null,0等)
作为字段声明一部分的赋值以文本顺序(即它们在源代码中出现的顺序)执行。注意,对于部分类,这会导致一些歧义。
基类构造函数被执行
构造函数体被执行
请注意,在C#中,您无论如何都无法编写此代码:
Public Property Name As String
Public Property MyFoo As New Foo(Name)
自动实现的属性不能将初始值作为声明的一部分
您不能将实例成员用作实例变量声明的一部分
为了说明我的意思,该类在C#中无效:
class Test
{
string x;
string y = x;
}
生成此编译时错误:
Test.cs(6,16):错误CS0236:字段初始化程序无法引用非静态字段,方法或属性“ Test.x”
关于c# - 对象初始化,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4821703/