【问题标题】:Cannot declare a variable with public access in a class from a module无法在模块的类中声明具有公共访问权限的变量
【发布时间】:2014-11-14 09:33:45
【问题描述】:

我正在制作基于 GUI 的应用程序(表单),遇到以下错误。

首先,我在一个模块中声明以下内容

Module test_mod

    Public Structure sub_struct
        Public test_int() As Integer
        Public Sub foo()
            ReDim test_int(3)
        End Sub
    End Structure

    Public Structure main_struct
        Public test_aaa As sub_struct
    End Structure

End Module

当然,我的真实代码比这更长更复杂,但这段代码将是一个完美的例子。

然后我在主类中声明这个test_mod

Public Class Form1
    Public test_this_struct As New test_mod.main_struct
    'do something here
End class

我的目的是让其他模块(这里没有显示)可以访问test_this_struct,这样主类就会简短而整洁。但是,它不断抱怨以下内容: test_this_struct 不能通过类form1 将类型test_mod.main_struct暴露在项目之外。

我在这里没有看到任何Private,我厌倦了删除newredim 和“struct in struct”,但它们不起作用。

我在 MSDN 上找到了一个article 及其相关内容,但它并没有真正帮助我。

【问题讨论】:

标签: vb.net visual-studio-2013


【解决方案1】:

默认情况下modules and classes are Friend(仅对您的程序集可见)。

但是,您的表单是明确的 Public,它将它及其成员公开给世界 - 这扩展了 test_mod.main_struct 的可见性。

也将您的模块声明为Public

【讨论】:

    【解决方案2】:

    试试这个:

    Public Module test_mod
        Public Structure sub_struct
            Public test_int() As Integer
    
            Public Sub foo()
                ReDim test_int(3)
            End Sub
        End Structure
    
        Public Structure main_struct
            Public test_aaa As sub_struct
        End Structure
    End Module
    

    来源:http://msdn.microsoft.com/en-us/library/aaxss7da.aspx

    【讨论】:

      猜你喜欢
      • 2018-02-02
      • 2017-09-20
      • 1970-01-01
      • 2017-11-17
      • 2023-03-27
      • 2014-12-03
      • 2015-03-31
      • 2017-05-15
      • 1970-01-01
      相关资源
      最近更新 更多