我有一个非常简单的问题。话虽这么说,我试图通过搜索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");
}
}
}
答案 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 static
或internal static
,然后通过调用NewState.State()