我想在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结构,并可能将它传递给不同的形式(一个变量的多次使用)。
答案 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);
}