如何在C#中定义全局结构?

时间:2012-08-10 15:25:13

标签: c# variables structure global

我想在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;
    }

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

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

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

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);
}