【问题标题】:Static class with instance variable works until I intoduce another variable into the static class that is static具有实例变量的静态类一直有效,直到我将另一个变量引入到静态的静态类中
【发布时间】:2021-08-31 09:41:27
【问题描述】:
static class Program
{
     static void Main()
     {
         DatabaseQueueLoader loader = new DatabaseQueueLoader();
         MFilesClient client = new MFilesClient();
         client.Connect();
     }
}


static class Program
{
     static void Main()
     {
         DatabaseQueueLoader loader = new DatabaseQueueLoader();
         private static NLogger logger = NLogger.UniqueInstance;
         MFilesClient client = new MFilesClient();
         client.Connect();
     }
}

顶部的 sn-p 有效,但底部的 sn-p 无效。我的理解是,在一个静态类中,需要让它的所有成员都是静态的。这是我继承的代码,我正在努力全面了解正在发生的事情。我不明白为什么这个顶级版本的代码可以工作。这可能会帮助我弄清楚为什么当我引入静态成员时,它不再起作用了。我还想知道为什么静态成员会破坏它。我可以通过多种方式解决此问题,但希望获得更深入的了解。

【问题讨论】:

    标签: c# oop static


    【解决方案1】:

    您不能在方法中使用 private 关键字或 static。您只能在一个类中使用它,这就是底部的一个不起作用的原因。

    【讨论】:

    • 静态方法中的实例变量之所以起作用,是因为它们是局部变量吗?
    【解决方案2】:

    “私有静态 NLogger 日志..”不正确。在方法内部时,变量本身不需要标记为静态。如果 NLogger 类是静态的,则不需要为 NLogger 声明变量,您可以直接引用该类中的方法。如果 NLogger 不是静态的,而是需要声明的对象,则从该变量中删除静态并正常声明。

    【讨论】:

      猜你喜欢
      • 2015-10-04
      • 1970-01-01
      • 2021-09-14
      • 1970-01-01
      • 2014-02-03
      • 2015-05-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多