Vb.net 初始化共享属性的值

Vb.net 初始化共享属性的值,vb.net,Vb.net,我想用一个计数器来计算一个类中创建了多少个对象,所以我认为应该使用一个共享属性。但是,VB不喜欢这样,并说,“如果没有类的显式实例,就不能从共享方法或共享成员初始值设定项中引用类的实例成员” 是否有方法初始化共享变量(在本例中为零),并使该属性仍能正确运行。我使用了JavaGet/set方法(getLength()/setLength()),效果很好,但我相信VBER肯定会反对这种方法 另外,使用两个变量来获取/设置一个实际使用的变量似乎有点多余。我明白为什么在VB方法中使用它是因为发生了递归,

我想用一个计数器来计算一个类中创建了多少个对象,所以我认为应该使用一个共享属性。但是,VB不喜欢这样,并说,“如果没有类的显式实例,就不能从共享方法或共享成员初始值设定项中引用类的实例成员”

是否有方法初始化共享变量(在本例中为零),并使该属性仍能正确运行。我使用了JavaGet/set方法(getLength()/setLength()),效果很好,但我相信VBER肯定会反对这种方法


另外,使用两个变量来获取/设置一个实际使用的变量似乎有点多余。我明白为什么在VB方法中使用它是因为发生了递归,但它看起来确实很奇怪。

支持字段
\u长度
也必须共享

Private Shared _Length As Integer = 0
使用两个变量来获取/设置一个实际使用的变量似乎有点困难 多余的

你没有两个变量,只有一个是
\u Length
,属性只是管理你如何访问该变量。请注意,即使这样,也要使用支持字段:

Public Property Length As Int32

您只是看不到它,因为它将为您生成。

aaarrrgggg。。。。我忘记了_Length前面的共享值。它也不是“使用两个变量”,也没有递归。在我意识到属性如何工作之前,我只是尝试在集合中使用Length=value,VB说确保我没有无限循环或递归,这似乎是因为集合会不断调用自己。是的。这就是问题所在。我觉得自己很愚蠢,但至少这是一个简单的解决办法。如果施梅尔特先生的回答有助于澄清问题,请单击复选标记,这样就从未回答的列表中删除了。
Public Property Length As Int32