Visual Basic变量在赋值之前使用

时间:2015-04-20 21:50:47

标签: vb.net

此代码与其他代码相同,它是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

2 个答案:

答案 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