VS C#与VB中的变量范围

时间:2013-12-23 15:45:05

标签: c# vb.net visual-studio-2012

我有一个包含2个项目的解决方案 - 1个VB,1个C#。我想从我的C#项目中查看和编辑我的VB项目的全局变量。我已将字符串变量(在VB中)声明为Public Shared。

我无法从我的C#项目中看到它。

我不熟悉C#,因此我不确定如何使用“Imports”语句来获取我的VB项目及其全局变量的可见性。我可以这样做吗?或者我没有正确地思考这个问题? (我是一个VB人,所以C#仍然有点神秘)。感谢。

3 个答案:

答案 0 :(得分:4)

VB和C#都不支持全局变量。

您需要从C#项目添加对VB项目的引用,以便它可以使用其成员 然后,您可以访问您在其中声明的类/模块的静态字段/属性:

ClassName.PropertyName

答案 1 :(得分:1)

虽然VB支持模块级声明,但C#不支持。在C#中,VB模块将显示为静态类。在VB中,您还可以导入整个类并在全局范围内使用其共享/静态成员。这也不是C#中可以实现的。

如果在VB中你有:

Public Module MyDeclares

    Public MyGlobalString As String

End Module

然后在C#中,您将添加对该项目的引用,然后编写如下代码:

using MyProject;

并访问该字段:

MyDeclares.MyGlobalString = "Some text";

<强> EDITED 如果要访问声明为内部的另一个程序集中的属性和方法(VB中的朋友),那么您将修改AssemblyInfo.vb(或AssemblyInfo.cs)文件并将InternalsVisibleTo声明添加到您想要的程序集中公开,引用要允许访问的程序集(而不是命名空间)。

如果您的程序集使用强密钥签名,则必须在定义中包含公钥。请点击链接获取更多信息,包括示例。

答案 2 :(得分:0)

我最终使用我的模块保留在VB项目中 - 这是我在各个部分中获得良好可见性的唯一方法。