1

我想在 C# 中定义一个全局结构并在三个单独的子例程中使用它。我已经创建了结构,但我不知道如何使它成为一个全局变量,所以我可以在我的代码的多个部分中使用它。任何帮助表示赞赏。

    public struct Simple
    {
        public int Position;
        public bool Exists;
        public double LastValue;
    };


    static void Main(string[] args)
    {
        Simple s;
        s.Position = 1;
        s.Exists = false;
        s.LastValue = 5.5;
    }

所以我想在我的代码中的另外两个例程中使用一个简单的结构,并可能将它传递给不同的形式(一个变量的多次使用)。

4

2 回答 2

2

C# 中最接近“全局”的是“静态”。只需将类和所有成员定义为静态,就可以从引用包含命名空间的任何地方访问它。正如Servy正确指出的那样编辑,类本身不必是静态的;但是这样做会强制所有成员在编译时保持静态。此外,静态成员可以具有任何可见性,因此您可以拥有由公共静态属性或方法使用的私有静态字段,并且您可以拥有在其主程序集之外不可见的内部静态类。只是静止不动并不会自动使其敞开。

然而,更好的模式可能是单例;你定义一个类,它有一个自身的静态实例,然后可以传递。好处是您仍然可以根据需要将对象作为实例类处理,但是使用静态 getter 可以在任何地方使用相同的实例。这里有一些阅读材料:http ://csharpindepth.com/Articles/General/Singleton.aspx

于 2012-08-10T15:27:29.560 回答
1

在您的情况下,您的主要方法中似乎有一个对象作为局部变量,您需要在另一个方法中使用该对象。在这种情况下,适当的解决方案是将参数添加到其他方法。看看这个例子:

public class MyObject
{
    public int Value;
}

public static void Main(string[] args)
{
    MyObject obj = new MyObject();

    obj.Value = 42;

    PrintObject(obj);

    Console.WriteLine("Press any key to exit...");
    Console.ReadKey(true);
}

public static void PrintObject(MyObject obj)
{
    Console.WriteLine(obj.Value);
}
于 2012-08-10T15:58:05.200 回答