从另一个项目引用(C#和VB)访问非静态变量

从另一个项目引用(C#和VB)访问非静态变量,c#,vb.net,winforms,reference,monogame,C#,Vb.net,Winforms,Reference,Monogame,这是我关于堆栈溢出的第一篇文章,请原谅我做错了什么。 我有两个项目在visual studio中使用相同的解决方案,一个是VB中的表单,另一个是使用c#中的单游戏游戏引擎进行模拟。VB窗体被用作数据显示,我在其中显示数据的折线图。我在VB表单中引用了c#simulation,因此我可以将数据从一个项目传递到另一个项目,但它只允许我查看静态变量,是否有任何方法可以查看列表和其他从另一个项目动态更改的变量 下面是vb中表单的代码 Imports System.IO 导入System.Windows.

这是我关于堆栈溢出的第一篇文章,请原谅我做错了什么。 我有两个项目在visual studio中使用相同的解决方案,一个是VB中的表单,另一个是使用c#中的单游戏游戏引擎进行模拟。VB窗体被用作数据显示,我在其中显示数据的折线图。我在VB表单中引用了c#simulation,因此我可以将数据从一个项目传递到另一个项目,但它只允许我查看静态变量,是否有任何方法可以查看列表和其他从另一个项目动态更改的变量

下面是vb中表单的代码

Imports System.IO
导入System.Windows.Forms.DataVisualization.Charting
模拟程序
公开课表格1
新系列的公共平均发电距离
'将变量设置为行数
Dim numOfVariables As Integer=Evolution\u Simulator.Game1.distance.Count
Dim testNumberOfVars作为整数
私有子表单1_Load(发送方作为对象,e作为事件参数)处理MyBase.Load
'数据列表
Dim ListofMeansofeach Generation作为新列表(整型)
作为整数的Dim计数器=0
'更改图表的标题
图表1.标题。添加(“生物距离”)
'在图形上创建一条新线
meanGenerationDistances.Name=“每代的平均距离”
'将其设置为折线图
meanGenerationDistances.ChartType=系列ChartType.Line
'从图形中删除系列1标签
图1.Series.Clear()
图1.系列添加(平均生成距离)
'启动计时器
Timer1.Start()
端接头
'要添加到图形中的子对象
子添加图(ByVal toAdd为整数)
平均生成距离.点.添加(添加)
端接头
私有子Timer1\u Tick(发送方作为对象,e作为事件参数)处理Timer1.Tick
Console.WriteLine(“NUM”和numOfVariables)
Console.WriteLine(“EVOL”&Evolution\u Simulator.Game1.distance.Count)
加法器(1)
'检查是否已将新项目添加到列表中
如果Evolution\u Simulator.Game1.distance.Count>numOfVariables,则
numOfVariables=Evolution\u Simulator.Game1.distance.Count
addToGraph(游戏1.距离(numOfVariables))
如果结束
端接头
末级
下面是被引用的类的代码,它在另一个项目中,但在同一个解决方案下

使用Evolution\u Simulator.sprite;
使用Microsoft.Xna.Framework;
使用Microsoft.Xna.Framework.Graphics;
使用Microsoft.Xna.Framework.Input;
使用制度;
使用System.IO;
使用系统诊断;
使用System.Collections.Generic;
名称空间演化模拟程序
{     
公共类游戏1:游戏
{
图形管理器图形;
SpriteBatch SpriteBatch;
#区域变量
//用于屏幕宽度和高度的预设值
公共静态屏幕高度;
公共静态整数屏幕宽度;
//允许游戏生成一个随机值
公共静态随机;
//用于生成新事物的游戏计时器
专用双定时器;
//用于说明游戏是否已开始的布尔
private bool_hasStarted=false;
//我将使用的测试生物的变量,直到我生成1000个
公共生物;
//创建一个存储所有生物结果的数组
公共生物[]生物阵列=新生物[50];
//用于添加到数组的计数器
int计数器=0;
//以后可以使用队列获取更多a级内容
//生物所有距离的静态列表
公共静态列表距离=新列表();
#端区
公共游戏1()
{
graphics=新的GraphicsDeviceManager(此);
Content.RootDirectory=“Content”;
//初始化随机对象
随机=新随机();
//设置窗口的大小
screenWidth=graphics.PreferredBackBufferWidth;
屏幕高度=graphics.PreferredBackBufferHeight;
}
受保护的覆盖无效初始化(){
base.Initialize();
}
受保护的覆盖void LoadContent()
{
//创建一个新的SpriteBatch,可用于绘制纹理。
spriteBatch=新spriteBatch(图形设备);
//设置节点的纹理
var nodeTexture=Content.Load(“节点”);
//实例化该生物,为其分配节点上下文
生物=新生物(节点结构);
//循环通过已生成的每个节点
createNodes(nodeTexture);
}
受保护的覆盖无效UnloadContent()
{
}
受保护覆盖无效更新(游戏时间游戏时间)
{
//如果按下空格键,则启动sim卡
if(Keyboard.GetState().IsKeyDown(Keys.Space))
{
_hasStarted=true;
}
//确保按下空格时不会发生任何情况
如果(!\u已开始)
{
回来
}
//控告计时器
_定时器=_timer+gameTime.ElapsedGameTime.TotalSeconds;
//让一个生物运行15秒
如果(计时器15)
{
if(计数器>creatureArray.Length-1)
{
回来
}
其他的
{
//重置计时器
_定时器=0;
//将生物添加到阵列中,稍后将进行排序
生物阵列[计数器]=生物;
//通过eac循环
private Game1() { }

private static Game1 instance;

public static Game1 GetInstance()
{
    if (instance == null) instance = new Game1();
    return instance;
}