【问题标题】:value of type integer cannot be converted to 1-dimensional array of integer整数类型的值不能转换为整数的一维数组
【发布时间】:2014-11-27 14:55:22
【问题描述】:

我正在查看一个 VB 项目。它定义了一个整数数组:

Dim BatchIDs As Integer()

然后它尝试使用一个方法填充这个数组

BatchIDs = m_oBatMan.GetBatchIDs(BatchClassName)

该方法确实返回一个数组

Public ReadOnly Property GetBatchIDs() As Integer()

但是填充 BatchIDs 的行给了我错误:整数类型的值不能转换为整数的一维数组。

我不是 VB 程序员,但我使用返回数组的方法分配数组。我没有看到问题。如果我将其更改为 BatchIDs 只是一个整数而不是数组,那么它就可以了。但是 GetBatchIDs 返回一个数组,所以我不明白发生了什么。有人帮我吗?

【问题讨论】:

    标签: arrays vb.net


    【解决方案1】:

    原因是该属性返回一个数组但没有参数。您认为您将它与参数一起使用,但实际上您正在访问数组的一个索引(如果 BatchClassNameInteger)。

    所以这样写:

    BatchIDs = m_oBatMan.GetBatchIDs
    

    但它似乎不是真正/完整的代码,因为它甚至没有编译。

    Public ReadOnly Property GetBatchIDs() As Integer() 
    

    给出:"'ReadOnly' property must provide a 'Get'"

    但是如果你添加getter:

    m_oBatMan.GetBatchIDs(BatchClassName) 
    

    返回 Integer 而不是 Integer 数组,因为您使用的是索引器(在 VB.NET 中是 () 而在 C# 中是 [] )。当然假设 BatchClassName 是一个你还没有提到的整数。

    【讨论】:

    • 当我右键单击它并选择转到定义时,它会转到该方法。有点奇怪。我认为项目中的某些东西搞砸了
    • 项目没有问题。注意GetBatchIDs() 不是方法;是“整数数组”类型的属性。当您像 Tim 所说的那样使用它时,您正在访问整个数组;当您像您的示例一样使用时,您只会访问数组的一个元素。
    • 您的代码甚至无法编译,您能否展示真实的代码。 Public ReadOnly Property GetBatchIDs() As Integer() 给出:"'ReadOnly' property must provide a 'Get'" 但是如果添加 getter m_oBatMan.GetBatchIDs(BatchClassName) 返回 Integer 而不是整数数组,因为您使用的是索引器(在 VB.NET 中是 (],而不是在 C# 中是[])。当然,假设BatchClassName 是您没有提到的Integer
    • ...我的评论中有一个错字,(] 应该是()
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-29
    相关资源
    最近更新 更多