此代码与其他代码相同,它是1到4之间的随机代码但由于某种原因,它表示它在使用之前使用它的值是与其他3个相同的代码相同但具有不同名称的代码发生这种情况有人可以帮助我吗?
Dim npc As Random
Dim ndamage As Integer
ndamage = npc.Next(1, 4)
If (Playerhealth.Value - ndamage) <= 0 Then
Playerhealth.Value = 0
Else
Playerhealth.Value = Playerhealth.Value - ndamage
End If
答案 0 :(得分:3)
在前三行代码中,
Dim npc As Random
Dim ndamage As Integer
ndamage = npc.Next(1, 4)
您声明npc
并在分配值之前使用它。您应该使用New
创建一个新实例:
Dim npc As New Random
进一步说明
Random
是一个类,这意味着它的默认值为Nothing
(在C#中也称为null
),因此在使用它之前需要为其分配一个值。在这种情况下,最简单的方法是直接在变量声明行中使用New
。
答案 1 :(得分:0)
Random
是一个Class,提供了很多方法来获取不同的随机数。
要访问这些方法,您必须创建该类的对象(有时称为实例)。
这是由new
运算符完成的。此运算符将在堆上分配新空间(这是一个内存区域),并使用对象值和对方法及其他对象的引用来填充它。
如果跳过new
语句,程序将尝试访问未分配的内存。在多种语言中,这将以nullpointer
例外结束,在vb.net中,您会获得used before it has assigned value
例外。
要解决您的问题,请创建random
类的对象:
Dim npc As New Random