如何为Loc变量设置默认属性?解决其无法索引的报错问题
解决VB.NET中Loc变量“无默认属性无法被索引”的问题
先看你的代码,问题其实出在这一行:picPlayer.Location = Loc()——你把Loc当成了带默认属性的对象来调用,但Loc本身就是Point结构体,完全不需要加括号!
直接修正错误的方法
把picPlayer.Location = Loc()改成picPlayer.Location = Loc就可以立刻消除这个报错。因为Point是值类型,直接赋值就行,不需要额外的索引或默认属性调用。
给Loc设置默认初始值的方式
如果你想提前给Loc设置默认属性(也就是初始值),避免未初始化的潜在问题,可以在声明变量的时候直接初始化:
Dim Loc As Point = New Point(0, 0)
这样哪怕后面的条件判断不满足,Loc也有一个合法的初始值,代码会更健壮。
优化后的简洁写法
其实你完全可以省略Loc这个中间变量,直接修改控件位置,代码会更简洁:
Private Sub tmrLeft_Tick(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles tmrLeft.Tick Dim MoveSpeed As Integer = 10 ' 直接计算并赋值新位置,省去中间变量 If picPlayer.Location.X - MoveSpeed >= 0 Then picPlayer.Location = New Point(picPlayer.Location.X - MoveSpeed, picPlayer.Location.Y) End If End Sub
报错原因解释
当你写Loc()时,VB.NET会尝试调用Loc的默认属性(比如部分集合类的Item属性是默认属性,可以用集合()来访问),但Point结构体并没有定义默认属性,所以编译器就抛出了“因无默认属性无法被索引”的错误。
内容的提问来源于stack exchange,提问作者cthdj1215
相关产品推荐
相关产品推荐

