纯萌新一个,求大佬指点 (使用vb2015软件练习的) 【2】
vb吧
全部回复
仅看楼主
level 2
苗蒲114514 楼主
在一个大类中我设了一个小类,小类的内容如下
Public·Class UserCollection
Inherits CollectionBase
End Class
第二段代码创造了小类的一个属性“List”,接着我在外部的大类中使用了如下代码(theuser,
Public AllUser As New UserCollection
。。。。。。。
AllUser.List.Add(theuser)
。。。。。。。
告诉我“System.Collection.Collections.Base"是”Protected"的,因此无法在此上下文中访问
请问是为什么
2022年06月30日 07点06分 1
level 6
你确认下访问修饰符,VB2015估计玩的人不多,你把代码多贴一些,看是否有人能帮你,看你描述应该和VB.NET 差不多,你把程序发我,我看能不能用VBNET或C#的理论帮助你分析
2022年06月30日 12点06分 2
level 2
苗蒲114514 楼主
Public Class Form1
Public Class UserCollection
Inherits CollectionBase
Public Sub Add1(theuser As user)
List.Add(theuser) (x)1
End Sub
End Class
Public AllUser As New UserCollection
Public ReadOnly Property SelectedUser As user
Get
Return CType(AllUser(lst1.SelectedIndex), user)
End Get
End Property
Public Structure user
Public Name As String
Public Address As String
Public Overrides Function ToString() As String
Return Name & ", " & Address
End Function
End Structure
Public Sub creat(name As String, address As String)
Dim theuser As user
theuser.Name = name
theuser.Address = address
AllUser.List.Add(theuser) (x)2
lst1.Items.Add(theuser)
End Sub
Private Sub btn1_Click(sender As Object, e As EventArgs) Handles btn1.Click
creat("Jon", "Smith Road")
creat("Jane", "York Road")
creat("Dee", "china Road")
End Sub
Private Sub lst1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles lst1.SelectedIndexChanged
lst2.Items.Clear()
lst3.Items.Clear()
lst2.Items.Add(AllUser(lst1.SelectedIndex).Name)
lst3.Items.Add(AllUser(lst1.SelectedIndex).Address)
End Sub
End Class
系统提示我标了(x)2的那行不能直接用,问题如之前所述。我想知道为什么不能。(那个没用到的Add1方法不用管,因为知道不用AllUser.Add1就必不行)
以及倘若直接对AllUser使用Add方法(AllUser.Add(。。。。)),他会说Add不是AllUser的成员。可当我对列表框什么的就可以直接用,难道方法也能作为成员吗?
2022年06月30日 12点06分 3
level 6
对VBNET不熟悉,下面按C#套路分析一下:
按你代码复制到VS,可以看出些问题:
你说的System.Collection.Collections.Base是protected,应该是你看错了,它是pulic的,但它后面的List是protected, (这可以选中再点右键-----转到定义来查看)。
你说的AllUser使用Add方法不行问题,AllUser是UserCollection类型,UserCollection确实没有Add方法,你怎么能用呢?
列表框之所以可以Add,那是控件内置的方法。
按C#,方法确应为类的成员之一。
最后,我其实没怎么明白你这段描述表达的意思........
2022年07月01日 06点07分 4
level 2
苗蒲114514 楼主
谢谢大佬,这里还有一个小问题想问
将结构变量Add进一个HashTable或是ArrayList中,HashTable或ArrayList中存储的结构变量会转换成什么类型的数据啊,每次用索引提取都免不了使用CType函数转换成结构的类型
2022年07月01日 09点07分 6
level 6
VBNET我也不熟,好在它和C
#同源兄弟,下面是基于C#
瞎说的:
哈希表这种你放入啥类型都可以,就是啥类型都可以作为它的键或值,当然放进去啥就一个取出啥,结构是复杂类型,不知道你是指把整个结构体当作一个键或值呢,还是把结构体拆散,用他的元素作为哈希表元素?如果后者那只能转换实现了
2022年07月01日 11点07分 7
level 6
还有,VBNET用的人很少,不妨考虑转学C
#吧,反正理念是一样的,C#
资料大把多
2022年07月01日 11点07分 8
1