为什么我不能在方法之外创建实例
Why I can't make instance outside of method
using System;
namespace FileApp
{
public class status
{
public int speed;
}
public class Player
{
private status ddd = new status();
ddd.speed = 3;
static void Main()
{
status dd = new status();
dd.speed = 3;
}
}
}
为什么我不能使用 ddd.speed?为什么我不能将 ddd.speed 设置为 3?请帮帮我..
你不能让语句(成员声明和初始化除外)直接在 class 下浮动 - 你需要将它们放在方法或构造函数中。
因为这样的逻辑语句属于方法,而不属于 class 定义。 class 定义可以定义 class 成员(字段、属性、方法),但不能执行命令式逻辑。
在您的 Main
方法中,您已经展示了如何执行此操作:
status dd = new status();
dd.speed = 3;
现在,如果您特别想在 Main
方法中访问 ddd
,请注意 Main
是 static
,因此不与任何关联给定 Player
的实例。所以你需要一个实例:
Player player = new Player();
并且由于 ddd
是 private
,您需要一些东西来允许您访问该字段。 属性 对这类事情很有用。例如定义为:
private status ddd = new status();
public status DDD { get { return ddd; } }
您也可以将其简化为:
public status DDD { get; private set; } = new status();
然后您就可以在您的实例上访问它了:
Player player = new Player();
player.DDD.speed = 3;
using System;
namespace FileApp
{
public class status
{
public int speed;
}
public class Player
{
private status ddd = new status();
ddd.speed = 3;
static void Main()
{
status dd = new status();
dd.speed = 3;
}
}
}
为什么我不能使用 ddd.speed?为什么我不能将 ddd.speed 设置为 3?请帮帮我..
你不能让语句(成员声明和初始化除外)直接在 class 下浮动 - 你需要将它们放在方法或构造函数中。
因为这样的逻辑语句属于方法,而不属于 class 定义。 class 定义可以定义 class 成员(字段、属性、方法),但不能执行命令式逻辑。
在您的 Main
方法中,您已经展示了如何执行此操作:
status dd = new status();
dd.speed = 3;
现在,如果您特别想在 Main
方法中访问 ddd
,请注意 Main
是 static
,因此不与任何关联给定 Player
的实例。所以你需要一个实例:
Player player = new Player();
并且由于 ddd
是 private
,您需要一些东西来允许您访问该字段。 属性 对这类事情很有用。例如定义为:
private status ddd = new status();
public status DDD { get { return ddd; } }
您也可以将其简化为:
public status DDD { get; private set; } = new status();
然后您就可以在您的实例上访问它了:
Player player = new Player();
player.DDD.speed = 3;