gpt4 book ai didi

c# - 对象初始化

转载 作者:太空宇宙 更新时间:2023-11-03 19:31:06 25 4
gpt4 key购买 nike

我有类似以下的类:

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 类中实例化了很多单例对象,我只想在一行中创建它们。问候 糟糕

####### 编辑 #############

非常感谢你们。我想扩大我的问题:C#呢,有没有可能按照自己定义的顺序初始化变量?

最佳答案

Public Property MyFoo As New Foo(Name)

As New 语法导致了这个问题。延迟初始化在这里不起作用,编译器在构造函数中生成代码来初始化 MyFoo 属性。此注入(inject)代码始终在您自己编写的任何代码之前运行。

没有干净的修复,您将不得不使用私有(private)支持字段:

Public Class Dings
Public Property Name As String
Private fooBacking As Foo

Public Property MyFoo As Foo
Get
Return fooBacking
End Get
Set(ByVal value As Foo)
fooBacking = value
End Set
End Property

Public Sub New(ByVal aName As String)
_Name = aName
MyFoo = New Foo(_Name)
End Sub
End Class

关于c# - 对象初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4821703/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com