如何在静态 main() 中实例化非静态数据项



我有一个带有静态主方法的 C# 控制台应用程序。

我希望能够在 main 中调用非静态方法,但不能。

我相信我需要保持主要静态,但我也想在程序中运行非静态方法?

下面的语句表示需要对象引用。

c1 = new Class1()

我在哪里/如何实例化这个程序中的非静态对象?

谢谢

namespace VER
{
    class Example
    {
        private Dictionary<string, long> dStrLong;
        Class1 c1;
        static void Main(string[] args)
        {
            c1 = new Class1();
        }
    }
}

如果Class1 c1设置为静态,则可以为其分配新对象并调用其非静态方法。

或者,从类中删除Class1 c1字段并写入Class1 c1 = new Class1();

我认为

您需要了解这在幕后是如何工作的。

使用静态方法

时,将为您创建一个静默实例,该实例用于调用静态方法。

任何非静态的东西都属于您创建的每个实例。这就是为什么编译器说需要对象引用(c1声明为实例成员(。

为了让您在 main 中使用c1,您也可以将其设置为静态,也可以使其成为公共成员并创建一个实例,以便您可以使用它:

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();
        }
    }
}

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();
        }
    }
}

由于您的代码当前存在,因此您正在尝试从静态方法访问属于实例的变量。

无论哪种方式,请确保实例化变量的对象。

相关内容

  • 没有找到相关文章

最新更新