使用在静态方法中创建的实例从静态方法调用非静态方法
Calling non static method from static method USING instance created in the static method
我尝试编写自己的 Console Snake 游戏,问题是这个..
我的整个游戏都在主线程中,然后我创建了 addVlakno(新线程)来计算那里的秒数,因此它可以每秒从 Main 中创建的 hra 实例调用一个方法,因此它将清除控制台并执行一些要移动的方法.
class Program
{
static void Main(string[] args)
{
Hra hra = new Hra();
Thread addVlakno = new Thread(Run);
addVlakno.Start();
...
}
public static void Run()
{
Thread.Sleep(1000);
hra.method(); // The problem is here*
}
}
*我知道我必须在这里有一个现有的 Hra 实例,但我需要使用在 Main 中创建的实例,这可能吗?通过一些代表,或一些指示或其他方式?因为创建的hra有游戏的所有值,所以我需要使用它们。
我试着把 Hra hra = new Hra();
放在 Main 之前,但在这种情况下,我什至不能在 main 中使用它。
您可以按如下方式传递参数:
static void Main(string[] args)
{
Hra hra = new Hra();
Thread addVlakno = new Thread(()=>Run(hra));
addVlakno.Start();
}
public static void Run(Hra hra)
{
Thread.Sleep(1000);
hra.method(); // No problem here*
}
您目前无法访问 hra
,因为静态方法只能访问其他静态变量和方法。您可以在 Main
:
之外将 hra
声明为 static
static Hra hra = new Hra();
static void Main(string[] args)
{
...
}
这将允许您在 Run
中访问 hra
。
我尝试编写自己的 Console Snake 游戏,问题是这个.. 我的整个游戏都在主线程中,然后我创建了 addVlakno(新线程)来计算那里的秒数,因此它可以每秒从 Main 中创建的 hra 实例调用一个方法,因此它将清除控制台并执行一些要移动的方法.
class Program
{
static void Main(string[] args)
{
Hra hra = new Hra();
Thread addVlakno = new Thread(Run);
addVlakno.Start();
...
}
public static void Run()
{
Thread.Sleep(1000);
hra.method(); // The problem is here*
}
}
*我知道我必须在这里有一个现有的 Hra 实例,但我需要使用在 Main 中创建的实例,这可能吗?通过一些代表,或一些指示或其他方式?因为创建的hra有游戏的所有值,所以我需要使用它们。
我试着把 Hra hra = new Hra();
放在 Main 之前,但在这种情况下,我什至不能在 main 中使用它。
您可以按如下方式传递参数:
static void Main(string[] args)
{
Hra hra = new Hra();
Thread addVlakno = new Thread(()=>Run(hra));
addVlakno.Start();
}
public static void Run(Hra hra)
{
Thread.Sleep(1000);
hra.method(); // No problem here*
}
您目前无法访问 hra
,因为静态方法只能访问其他静态变量和方法。您可以在 Main
:
hra
声明为 static
static Hra hra = new Hra();
static void Main(string[] args)
{
...
}
这将允许您在 Run
中访问 hra
。