在整个命名空间中引用某个变量的最佳方法?

l46*_*kok 3 .net c# global-variables winforms

我有一个mainForm在我的程序中几乎无处不在的变量.我希望能够引用这个变量,而不必键入保存此变量的类的名称(即Global._mainForm,我应该只能键入_mainForm以在同一名称空间内的任何位置访问此变量).

完成此任务的最佳方法是什么?

Zip*_*per 7

每当我看到一个全球性的东西,我都会担心,所以我会重新考虑你的程序是如何构建的.如果没有全局可访问的对象,您几乎总能逃脱.虽然有合理的理由拥有一个全球可访问的对象,但通常我会试图远离它们.

根据您提供的少量信息,您可以使用事件与主窗口进行通信,而不是直接访问它.

如果您确实需要全局可访问的对象,那么您可以执行类似的操作

注意:在下面的代码中,一切都是静态的,相反,你可以创建一个特殊的静态类,它包含对你真正感兴趣的类实例的引用.但是我没有办法知道要保持全局在所有名称空间之外的引用到对象的实例.

using Bar = ProbablyAReallyBadIdeaToHaveAGlobalAnythingButHeyWhyNot.TestClass;

namespace ProbablyAReallyBadIdeaToHaveAGlobalAnythingButHeyWhyNot
{
  public static class TestClass
  {
    public static int TestFoo { get; set; }
  }
}

namespace Foo.SomeOtherNamespace
{
  class MyClassThatDoesStuff
  {
    public void DoStuff()
    {
      Bar.TestFoo = 123;
    }
  }
}
Run Code Online (Sandbox Code Playgroud)