vb.net中嵌套类访问外部类变量时的有关问题
vb.net中嵌套类访问外部类变量时的问题
外部类向str1赋值,然后
嵌套类访问外部类变量str1时这个str1值是怎么已经被空的?
这可能是因为被初始化的。
请问程序员如何解决这个问题。。。
我能做到的是把str1设置成共享shared。我觉得这样暴露很不理想。
如何防止外部类变量str1值不被初始化的情况下嵌套类仍然访问已存在的变量str1值呢
------解决方案--------------------
既然你知道加上shared就能实现,那么应该明白你的代码里cla1和cla2引用不同的对象实例,修改cla1不会影响cla2,反之亦然。
你可以把代码改成这样:
让cla1和cla2引用相同实例,这样MySub对str1的修改才能互相影响
------解决方案--------------------
你对类和继承的理解有问题
比如有两类计算器,一类是普通的只能算加减乘除的计算器,一类是继承了这类计算器特性的但是有更多功能比如幂 自然对数的计算器,这个叫继承。类必须实例化才能用,你实例化一个外面的普通计算器,里面的高级计算器类是没有实例化的。继承是继承类,不是继承实例,你新建了class2的实例,但是对于myclass1来说它的str是class2类里的str,这个是空的,你对str1的赋值是在class2的一个实例里赋值的,而且被赋值的这个str1是在实例里的,不是在类里的公共成员。你如果把str1设为shared就不一样了,这个时候是类的公共成员,所有实例共享一个
Public Class Class2
Public str1 As String
Overloads Sub MySub()
str1 = "欢迎光临"
MsgBox(str1)
End Sub
Friend Class MyClass1 : Inherits Class2
Overloads Sub MySub()
MsgBox(str1)
End Sub
End Class
End Class
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim cla1 As New Class2
cla1.MySub()
Dim cla2 As New Class2.MyClass1
cla2.MySub()
End Sub
End Class
外部类向str1赋值,然后
嵌套类访问外部类变量str1时这个str1值是怎么已经被空的?
这可能是因为被初始化的。
请问程序员如何解决这个问题。。。
我能做到的是把str1设置成共享shared。我觉得这样暴露很不理想。
如何防止外部类变量str1值不被初始化的情况下嵌套类仍然访问已存在的变量str1值呢
------解决方案--------------------
既然你知道加上shared就能实现,那么应该明白你的代码里cla1和cla2引用不同的对象实例,修改cla1不会影响cla2,反之亦然。
你可以把代码改成这样:
Dim cla2 As New Class2.MyClass1
Dim cla1 As Class2 = cla2
cla1.MySub()
cla2.MySub()
让cla1和cla2引用相同实例,这样MySub对str1的修改才能互相影响
------解决方案--------------------
你对类和继承的理解有问题
比如有两类计算器,一类是普通的只能算加减乘除的计算器,一类是继承了这类计算器特性的但是有更多功能比如幂 自然对数的计算器,这个叫继承。类必须实例化才能用,你实例化一个外面的普通计算器,里面的高级计算器类是没有实例化的。继承是继承类,不是继承实例,你新建了class2的实例,但是对于myclass1来说它的str是class2类里的str,这个是空的,你对str1的赋值是在class2的一个实例里赋值的,而且被赋值的这个str1是在实例里的,不是在类里的公共成员。你如果把str1设为shared就不一样了,这个时候是类的公共成员,所有实例共享一个