gpt4 book ai didi

.net - .NET 中属性的嵌套类访问方法

转载 作者:行者123 更新时间:2023-12-04 07:59:24 24 4
gpt4 key购买 nike

我试图找出在我正在创建的嵌套类中设置和获取属性的最佳方法。

我有一个类 Car,它有一个嵌套类 ControlPanel,并且想让控制面板的属性只能由 Car 和控制面板类访问。

(即:不在程序集或命名空间内,也不在将使用类库的应用程序内)...我已将类访问属性更改为 friend 、 protected friend 、私有(private)、公共(public),但任何组合都不匹配我的预期结果。

我想更改类的 Drive() Sub 中的属性,如下所示。

有什么想法吗?

 Public Class Car

Dim cp As New ControlPanel

Public Class ControlPanel
Private _Speedometer As Integer = 0
Private _Odometer As Integer = 0

Public Property Speedometer() As Integer
Get
Return _Speedometer
End Get
Protected Set(ByVal value As Integer)
_Speedometer = value
End Set
End Property

Public Property Odometer() As Integer
Get
Return _Odometer
End Get
Protected Set(ByVal value As Integer)
_Odometer = value
End Set
End Property

End Class

Public Sub Drive()

cp.Odometer = 76323
co.Speedometer = 86

End Sub

End Class

最佳答案

正如 Robert Levy 指出的那样,您指的是“嵌套类”而不是“子类”等。

至于如何实现你正在寻找的......你只是想让 ControlPanel 成为一个私有(private)类吗?这将确保 ControlPanel 的所有成员只能由 Car 访问。如果您在 ControlPanel 上有其他成员需要公开,或者外部世界需要以某种方式持有对 ControlPanel 的引用,请考虑使用接口(interface)仅公开您希望公开可用的那些成员。

Public Class Car

Dim cp As New ControlPanel

Private Class ControlPanel

Public Property Speedometer As Integer
Public Property Odometer As Integer

End Class

Public Sub Drive()
cp.Odometer = 76323
cp.Speedometer = 86
End Sub

End Class

可选...
Friend Interface IControlPanel
//Whatever actually needs to be publically accessible.
End Interface

// Other Code...

Private Class ControlPanel
Implements IControlPanel

// Other Code...

您在 API 方面试图实现的目标是什么?

关于.net - .NET 中属性的嵌套类访问方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4742818/

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