Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在VB.NET中共享C#类和静态变量,以获得相同的解决方案_C#_Vb.net_Visual Studio_Projects And Solutions_Solution - Fatal编程技术网

在VB.NET中共享C#类和静态变量,以获得相同的解决方案

在VB.NET中共享C#类和静态变量,以获得相同的解决方案,c#,vb.net,visual-studio,projects-and-solutions,solution,C#,Vb.net,Visual Studio,Projects And Solutions,Solution,我想在VB.Net项目中共享C#项目中的代码。 我想在VB中引用一个公共类及其变量。 因此,我将VB和C#项目放在同一个解决方案中。 以下是C#class insde C#项目的声明: 当我想在VB中引用它时,我会出现以下错误: “MyUtils”在此上下文中不可访问,因为它是“Friend” 我已经在C#中将每个对象的可访问性更改为public,但我不知道如何允许访问C#类。我应该补充一点,我对VB及其继承机制还不够熟悉。我使用.NET Framework 4.8创建了一个名为“Console

我想在VB.Net项目中共享C#项目中的代码。 我想在VB中引用一个公共类及其变量。 因此,我将VB和C#项目放在同一个解决方案中。 以下是C#class insde C#项目的声明:

当我想在VB中引用它时,我会出现以下错误: “MyUtils”在此上下文中不可访问,因为它是“Friend”

我已经在C#中将每个对象的可访问性更改为
public
,但我不知道如何允许访问C#类。我应该补充一点,我对VB及其继承机制还不够熟悉。

我使用.NET Framework 4.8创建了一个名为“ConsoleApp2”的C#console应用程序,并添加了一个名为“MyUtils”的类:

namespace ConsoleApp2
{
公共类八哥
{
公共静态字节[]零数组={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
}
}
我建立这个项目是为了确保它能工作

然后,我在同一个解决方案中添加了一个名为“ConsoleApp1”的VB.NET控制台应用程序项目。我添加了对ConsoleApp2项目的引用:

并使用此代码:

模块1
副标题()
Dim bb=ConsoleApp2.MyUtils.zeroArray
Console.WriteLine(String.Join(“,bb.Select(Function(b)b.ToString(“X2”)))
Console.ReadLine()
端接头
端模块
并运行它以获得输出:

00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00


不熟悉VB.net,但我知道c#/VB可以共享代码,谷歌很快就展示了它可能有一个c#和VB项目的解决方案。我使用过一个示例,但无法再访问它。vb.net中的
Friend
与C#中的
internal
相同。因此,您发布的代码片段与错误消息完全不匹配。您实际使用的C#程序集在类定义中还没有
public
。一定要确保vb.net和C#项目属于同一个解决方案,并且vb.net项目使用项目引用而不是文件引用来避免此类灾难。@HansPassant我不知道为什么会发生这种情况。我的C#项目被更改为类库,我在VB.NET项目中引用了它。但错误如上所述。当我将VB.NET项目更改为C#project的reference
dll
文件时,它可以正常工作!
public class MyUtils
{

    public static byte[] zeroArray = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
    ....