【问题标题】:Multi-dimensional array with different datatypes具有不同数据类型的多维数组
【发布时间】:2015-07-10 01:16:17
【问题描述】:

我在 VB.NET 中需要一些帮助: 我有六个长度相同的数组,但它们的元素具有不同的数据类型(字符串和长)。我需要创建一个多维数组或锯齿状数组,稍后将立即将其复制到 Excel 范围内。

这是可能的还是我只能在数组中包含相同类型的元素?还有其他方法可以替代吗?

【问题讨论】:

    标签: arrays vb.net multidimensional-array jagged-arrays


    【解决方案1】:

    您不能拥有包含两种不同类型的多维数组。解决方案是创建一个包含您需要的两个变量的类。

    例如,

    Public Class MyObject
        Public Property MyString As String
        Public Property MyInteger As Integer
    End Class
    

    以下步骤是在您要创建数组的类中。您可以定义以下内容:

    //...
    Dim myFancyObjects as MyObject(3)
    //...
    

    您可以通过执行以下操作访问您的属性:

    Integer testNumber = myFancyObjects(0).myInteger
    String testString = myFancyObjects(0).myString
    

    【讨论】:

    • 如果我使用单独的类,我可以将所有 emelend 的整个类(例如 10 列,每列 200 个元素)复制到 10x200 的 Excel 范围中吗?如果我需要一个循环来取回存储的值,那么我不能使用这种方式。如何将值复制到 Excel 范围?
    • 你把这个'MyObject'类放在一个数组中。该数组包含一个具有 2 个属性的对象,它是访问二维数组的替代方法。但是 2 个维度被 2 个属性所取代。所以是的,这是可能的。
    • “将其复制到数组中”是什么意思?我创建了类,即带有 Getter/Setter 的属性,并在我的主类中创建了一个新类类型的变量。如何在每个属性中存储值,然后将它们复制回 Excel?
    • 您将它们存储为:myFancyObjects(0).myInteger = 3 myFancyObjects(0).myString = "Hello world"
    • 这是我现在的示例代码: '用于存储值的类 Public Class HTClass Private Dim m_Arr_1() As Long Public Property Arr_1() As Long() Get Return m_Arr_1 End Get Set m_Arr_1 = value End Set End Property End Class 'Main Class'... Dim HT As New HTClass For i as Integer = 1 to lastRow HT.Arr_1(i - 1 - CLng(offset)) = i Next For i As Long = 1 To 10 MsgBox(HT.Arr_1(i)) Next 但是当我尝试访问最后一个 For-Loop 中的 Property 值时出现错误。按照您的建议声明 HTClass(3) 不起作用,并且出现编译器错误。
    猜你喜欢
    • 2014-02-01
    • 2016-08-03
    • 1970-01-01
    • 2016-07-22
    • 1970-01-01
    • 2014-11-28
    • 2021-05-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多