如何在 C# 中使用另一个 class 更改变量

How to change variable from one class using another in C#

标题可能听起来有点混乱,但我想做的基本上是创建一个 class, 声明一个默认值为 0 的 public int,然后在 Program class I 中 在函数中永久更改此变量的值,如果我使用另一个函数打印此值,它将打印第一个函数中设置的值。 例如:

using System;
{

    class Global
    {
       public int variable = 0;
    }

    class Program
    {
        static void Main(string[] args)
        {
            Global test = new Global();
            test.variable = 10;
            //it makes no sense in this code to use another function, 
            //but in my other project it does
            Function();
            Console.ReadLine();
        }
        
        static void Function()
        {
            Global test = new Global();
            //should print 10
            Console.WriteLine(test.variable);
        }
        
    }
    
}

如果您不想像这样进行注入,您可以创建静态 class:

public static class Global
{
    public int variable = 0;
}
class Program
{
    static void Main(string[] args)
    {
        Global.variable = 10;
    }
    static void Function()
    {
        Console.WriteLine(Global.variable);
    }
}

或者您可以将 class 作为参数从您调用它的任何地方注入。

public class Global
{
    public int variable = 0;
}
class Program
{
    static void Main(string[] args)
    {
        var test = new Global();
        test.variable = 10;
    }
    static void Function(Global global)
    {
        Console.WriteLine(global.variable);
    }
}

如果你想在每个 class 中永久更改这个变量,你可以使用静态 class,但是你将无法创建它的实例(如果你想要其他变量是非静态的。

我建议查看 IServiceProvider,因为如果 Function() 方法在另一个 class 中并且您想通过全局 class.

,它们会非常有用