Visual Basic:结构成员的只读可见性

Visual Basic: Read only Visability of Structure members

好的,在我问过一个涉及结构和 classes 的上一个问题之后就是这种情况。所以引用 (我现在使用 classes 作为基础)我有一个 class 的成员,它是一个数组(我知道我必须声明它没有维度) 作为构造函数的一部分,我希望它定义数组的维度。当我最初尝试执行 ReDim 时,编译器不高兴,因为我将成员声明为 ReadOnly。虽然我对阵列所做的事情有它自己的可行性问题,但这不是我要问的,因为它提出了一个我必须首先回答的不同问题。

有没有办法让 class/structure 的成员只在 class/structure 之外读取,但可以在 class/structure 中修改,而无需使用属性或内部 functions/subs 以获得读取权限?

基本上类似于将成员声明为私有,但您至少可以在 class/structure 之外读取该成员。只是没有别的。

没有。就其本身而言,无法使 class 字段 public 用于读取,但私有用于写入。字段上的可访问性修饰符影响读取和写入。

做你想做的最干净的方法是在你的 class 中定义一个私有字段,并定义一个 public 属性 getter:

Private _dummy As String

Public Property Dummy() As String
    Get
        Return _dummy
    End Get
End Property

当然,如果能够更简洁地表达这一点就好了,就像使用自动实现的属性的 C# 一样:

public string Dummy {get; private set;}

你可以这样做

Private _some As String
Public Property Some As String
    Get
        Return _some
    End Get
    Private Set(value As String)
        _some = value
    End Set
End Property