C# 静态变量不变

C# 静态变量不变,c#,monogame,C#,Monogame,我有一个项目,分为3个独立的visual studio项目,一个游戏、控制台和库项目,我试图从库中获取一个静态变量,从控制台项目中进行更改,然后在游戏项目中读取它。下面是一些代码来澄清这一点: 这是我的库代码,我想更改的一个变量 namespace LibraryProject.Values { public class Variables { public static string LastSaid { get; set; } } } 这是控制台项目

我有一个项目,分为3个独立的visual studio项目,一个游戏、控制台和库项目,我试图从库中获取一个静态变量,从控制台项目中进行更改,然后在游戏项目中读取它。下面是一些代码来澄清这一点:

这是我的库代码,我想更改的一个变量

namespace LibraryProject.Values
{
    public class Variables
    {
        public static string LastSaid { get; set; }
    }
}
这是控制台项目,我在库项目中更改此字符串:

namespace ConsoleProject
{
        private void Client_OnMessageRecieved(object sender, OnMessageReceivedArgs e)
        {
            Console.WriteLine("Recieved message, the message was: " + e.ChatMessage.Message);
            Variables.LastSaid = e.ChatMessage.Message;
            Console.WriteLine("LastSaid is now: " + Variables.LastSaid);
        }
}
最后这是我的游戏项目,它在屏幕上显示值

namespace LibraryProject
{
    public Interface(ContentManager content)
    {
    TextString lastSaid;


        public void Update()
        {
            lastSaid = new TextString(fonts.Font1, Variables.LastSaid, new Vector2(100, 100), Color.White);
        }
}
我的文本字符串类:

namespace LibraryProject
{
    class TextString
    {
        SpriteFont Font;
        string Text;
        Vector2 Position;
        Color Color;

        public TextString(SpriteFont font, string text, Vector2 position, Color color)
        {
            this.Font = font;
            this.Text = text;
            this.Position = position;
            this.Color = color;
        }

        public void Draw(SpriteBatch spriteBatch)
        {
            if (Text != null)
            {
                spriteBatch.DrawString(Font, Text, Position, Color);
            }
        }
    }
}
我的游戏项目:

namespace GameProject
{
    public class GameCore : Game
    {
        protected override void LoadContent()
        {
            Interface = new Interface(Content);
        }
        protected override void Update()
        {

            Interface.Update(gameTime);
}
}
}

我可以很好地更改控制台项目中的值,我的控制台输出库项目中的LastSaid变量已经更改,但是当我最终想要在游戏项目中输出LastSaid变量时,当我检查变量时,它根本没有更改,它停留在它实例化时的值。有人能帮我解释一下为什么会发生这种情况吗?

我假设您的GameProject和ConsoleProject是两个应用程序

如果是这种情况,则静态变量不会在两个进程之间共享,它们都有一个内存中的实例。即使静态变量属于库

其他问答与此类似:

创建类
static
显示您的实际代码
lastSaid
不存在。请尝试
LibraryProject.Variables。lastSaid
(使用完整名称空间)确保值为
set
,然后再尝试
获取它,还请注意,在设置之后,您可能需要调用
更新
。您的游戏项目是否与控制台和库项目在同一进程中运行?