我有一个带有静态主方法的C#控制台应用程序。
我希望能够在main中调用非静态方法 不能。
我相信我需要保持主静态,但我也想 在程序中运行非静态方法?
下面的陈述说明需要一个对象参考。
c1 = new Class1()
在哪个/如何在此程序中实例化非静态对象?
谢谢
namespace VER
{
class Example
{
private Dictionary<string, long> dStrLong;
Class1 c1;
static void Main(string[] args)
{
c1 = new Class1();
}
}
}
答案 0 :(得分:0)
如果你使Class1 c1
为静态,你就可以为它分配新对象并调用它的非静态方法。
或者,从班级中删除Class1 c1
字段并撰写Class1 c1 = new Class1();
。
答案 1 :(得分:0)
我认为你需要了解它在幕后的运作方式。
使用静态方法时,会为您创建一个静默实例,即为静态方法调用提供服务的实例。
任何非静态的东西都属于您创建的每个实例。这就是为什么编译器说需要对象引用(c1
被声明为实例成员)。
为了让您在c1
内使用main
,您可以将其设为静态,也可以将其设为公共成员并创建一个实例,以便您可以使用它:
namespace VER
{
class Example
{
private Dictionary<string, long> dStrLong;
//You can make it static
static Class1 c1 = new Class1();
static void Main(string[] args)
{
c1.DoSomething();
}
}
}
OR
namespace VER
{
class Example
{
private Dictionary<string, long> dStrLong;
//You can make it public
public Class1 c1 = new Class1();
static void Main(string[] args)
{
var c1 = new Example();
c1.DoSomething();
}
}
}
由于您的代码当前存在,您尝试从静态方法访问属于实例的变量。
无论哪种方式,请确保为变量实例化对象。