c#:(静态)类级变量

标签 c# static declaration

这绝对是一个有点菜鸟的问题,但到目前为止我的搜索还没有为我解决这个问题。

A 想要一个特定的控制台应用程序来存储多个类级变量。在一种情况下,我想存储我的日志记录对象的副本,我将在类里面的各个地方使用它。在另一种情况下,我想存储一个简单类型,实际上是一个 int 值,它只会在内部使用(不需要是属性)。

看来,除非我将这些变量指定为静态变量,否则我不能在 Main() 及以后使用它们。

我对静态对象的理解是它们的值在对象的所有实例之间共享。在正常操作下,我希望它们只是我的应用程序的一个实例,所以这个问题不是问题 - 但它突出了我对相当基本的事情缺乏理解。

就我的日志记录对象而言,我可以看到将其设为静态的情况 - 在多个实例之间共享日志可能是一个好处。然而,情况可能并非如此……就我的 int 而言,我当然不希望跨实例共享它。

所以...

  • 我是不是误解了这背后的理论?
  • 我应该以不同的方式声明和使用我的类级变量吗?
  • 我应该避免使用它们吗?我可以简单地将值作为参数从一个函数传递到另一个函数,尽管这似乎没有什么明显的收获。

编辑:好的,信息很明确——我对静力学的理解基本上是正确的,但问题是结构和方法之一。感谢您的回复。

最佳答案

只需将您的应用程序封装在另一个类中,您可以在 Main 方法上创建和执行该类:

class MyApp {
  private MyLog lol = new MyLog(); 
  private int myInt = 0;

  public void Execute() {
    // ...
  }
}

class Program {
  public static void Main() {
    new MyApp().Execute();
  }
}

如果需要,您仍然可以将日志字段设置为静态。

关于c#:(静态)类级变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3839493/

相关文章:

c# - 每次在 C# 中接收到新连接时,如何创建一个新线程?

C#:Tests.* 命名空间隐藏了另一个命名空间

javascript - 如何在 HTML 文件中重复使用 base64 图像

java - 将函数作为静态类传递以实现 Java 中的快速数字

c - 错误: extern declaration of 'i' follows declaration with no linkage

C# 扩展方法 - 返回调用对象

c# - 什么是 cert8.db 和 key3.db 文件?

java - 用户在控制台输入密码时,显示星号(*)而不是纯文本

c - C 中合法或不合法

python - python 中的函数声明具有可读且干净的代码?