访问类中的方法(C#)

时间:2014-06-19 03:25:14

标签: c# class

我有一个非常简单的问题。话虽这么说,我试图通过搜索stackexchange之前回答的问题来解决它,但我做得很短。这是因为我想知道如何告诉程序的入口点访问其他类。

我以前写过一个简单的有限状态机,但是代码变得拥挤,因为我不知道如何将其分解为类。在我的新计划中,我试图将其分解,以便更好地管理。

通过访问我创建的课程NewState(),入口点开始。如果你运行代码,你会发现尽管编译正确,NewState()内的函数不会产生我想要的Console.WriteLine语句。

所以,我的问题是:

如何让我的代码访问static void State()类中的NewState方法并显示Console.WriteLine语句?

计划类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Finite_State_Machine_3
{
    class Program
    {
        static void Main(string[] args)
        {
            new NewState();
        }
    }
}

NewState类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Finite_State_Machine_3
{
    class NewState
    {
        static void State()
        {
                Console.WriteLine("Hello world");
        }
    }
}

3 个答案:

答案 0 :(得分:3)

该方法是静态的,因此不要创建实例,而是将State方法公开并尝试使用

static void Main(string[] args)
{
    NewState.State();
}

但如果你打算这样称呼它,你可能最好把它放在同一个班级。

class Program
{
    static void Main(string[] args)
    {
        State();
    }

    static void State()
    {
        Console.WriteLine("Hello world");
    }
}

如果你确实想要它在一个单独的类中并从该类的实例中调用它,则需要使State方法非静态(以及公共)并从实例中调用它

class Program
{
    static void Main(string[] args)
    {
        NewState MyVariable = new NewState();
        MyVariable.State();
    }
}


class NewState
{
    public void State()
    {
        Console.WriteLine("Hello world");
    }
}

答案 1 :(得分:0)

如果它是静态的,那么你将从类而不是从实例中调用它。

所以,

NewState.State()

那就是说,如果我记得我的设计模式正确,你实际上想要传递实例,而不是使用静态方法。

答案 2 :(得分:0)

您需要制作方法public staticinternal static,然后通过调用NewState.State()

来调用它