VB.NET数组显式声明问题



代码:

Private ingredientProperties(,) As Integer = {{ingredient1.Location.X, ingredient1.Location.Y}, {ingredient1.Size.Width, ingredient1.Size.Height}} ' {{ingredient location X, Y}, {ingredient size X, Y}}
Private amountProperties(,) As Integer = {{amount1.Location.X, amount1.Location.Y}, {amount1.Size.Width, amount1.Size.Height}} ' {{amount location X, Y}, {amount size X, Y}}

在这里,我在类作用域中声明两个二维数组,其中包含两个文本框的位置和大小。我很确定我得到了这个错误:

Recipe Manager.exe中发生类型为"System.InvalidOperationException"的未处理异常其他信息:创建表单时出错。有关详细信息,请参阅Exception.InnerException。错误是:对象引用未设置为对象的实例。

因为位置和大小还不存在,有其他方法可以声明它们吗?

由于我认为我现在已经理解了您的问题,我将提供一个关于如何在您的情况下初始化数组的示例:

您希望在类中有一个全局变量,并使用其他对象的属性对其进行初始化。要做到这一点,有必要首先初始化其他对象(否则,如果您尝试使用它们,将获得NullReferenceException(。

通常最好不要内联初始化全局变量,因为你并不知道每个变量在哪一点得到它的值。最好使用一些初始化方法,该方法在应用程序开始时直接调用,此时您可以完全控制。然后,您可以确定变量的所有值。

我编写了一些同样使用Form.Load事件的示例代码。(如果您真的想控制启动顺序,最好也禁用Application Framework并使用自定义Sub Main作为入口点,但在这里使用Form.Load也没问题。(

Public Class Form1
    'Global variables
    Private MyIngredient As Ingredient 'See: No inline initialization
    Private IngredientProperties(,) As Integer 'See: No inline initialization
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        'At this stage, nothing is initialized yet, neither the ingredient, nor your array
        'First initialize the ingredient
        MyIngredient = New Ingredient
        'Now you can enter the values into the array
        With MyIngredient 'Make it more readable
            IngredientProperties = {{.Location.X, .Location.Y}, _
                                    {.Size.Width, .Size.Height}}
        End With
    End Sub
End Class
Public Class Ingredient
    Public Location As Point
    Public Size As Size
    Public Sub New()
        'Example values
        Location = New Point(32, 54)
        Size = New Size(64, 64)
    End Sub
End Class

相关内容

  • 没有找到相关文章

最新更新