繁体   English   中英

VS C#与VB中的可变范围

[英]Variable Scope in VS C# vs VB

我有2个项目的解决方案-1个VB,1个C#。 我想从我的C#项目中查看和编辑VB项目的全局变量。 我已经将字符串变量(在VB中)声明为“公共共享”。

我在C#项目中看不到它。

我对C#不熟悉,因此不确定如何执行“导入”语句的等效方法来获得VB项目及其全局变量的可见性。 我可以这样做吗? 还是我没有真正考虑正确? (我是VB专家,所以C#还是个谜)。 谢谢。

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

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

ClassName.PropertyName

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

如果在VB中您具有:

Public Module MyDeclares

    Public MyGlobalString As String

End Module

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

using MyProject;

并访问该字段:

MyDeclares.MyGlobalString = "Some text";

已编辑如果您要访问声明为内部(在VB中为好友)的另一个程序集中的属性和方法,则可以修改AssemblyInfo.vb(或AssemblyInfo.cs)文件,并向要公开的程序集添加InternalsVisibleTo声明,引用要允许其访问的程序集(而不是名称空间)。

如果程序集使用强键签名,则必须在定义中包括公钥。 单击链接以获取更多信息,包括示例。

我最终将我的模块留在了VB项目中,那是我可以在各个部分中获得良好可见性的唯一方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM