这绝对是一个菜鸟问题,但我的搜索远远没有解决这个问题。
希望特定的控制台应用程序存储多个类级变量。在一种情况下,我想存储我的日志对象的副本,我将在类中的不同位置使用它。在另一种情况下,我想存储一个简单的类型,实际上是一个int值,它只在内部使用(不需要是属性)。
看来,除非我将这些变量指定为静态,否则我不能在Main()及更高版本中使用它们。
我对静态对象的理解是它们的值在对象的所有实例之间共享。在正常操作下,我希望它们只是我应用程序的一个实例,所以这个问题不是问题 - 但它强调了我对相当基本的东西缺乏了解。
在我的日志记录对象的情况下,我可以看到使其成为静态的情况 - 在多个实例之间共享日志可能是一个好处。但是,情况可能并非如此......对于我的int,我当然不希望在实例之间共享它。
因此...
答案 0 :(得分:9)
只需将您的应用程序封装在另一个类中,您可以使用Main
方法创建并执行该类:
class MyApp {
private MyLog lol = new MyLog();
private int myInt = 0;
public void Execute() {
// ...
}
}
class Program {
public static void Main() {
new MyApp().Execute();
}
}
如果需要,您仍然可以将日志字段设置为静态。
答案 1 :(得分:3)
您应该在Main函数之外创建一个类,然后在Main中创建该类的实例。
EG
class MyConsoleApp
{
public static void Main()
{
MyClass mc = new MyClass();
}
}
Class MyClass
{
private MyLog lol as new MyLog();
private int myInt = 0;
}
答案 2 :(得分:2)
这里的问题或多或少纯粹是语法:因为静态方法只能访问静态字段,而Main()
方法必须是静态的,所以这要求使用的变量是静态的。您永远不会创建MyConsoleApp类的实例。
这里的理论并不多,只有务实的要求......
托马斯