我有一个服务器的C#脚本我正在努力工作,并且我一直收到以下错误:
CS0120: Line 56: An object reference is required for the non-static field, method, or property 'Server.Items.AgelessHouseDeed.Value.get'
以下是相关代码:
public class AgelessHouseTimer : Timer
{
private HouseSign sign;
private int m_Value = AgelessHouseDeed.Value;
public AgelessHouseTimer( HouseSign h ) : base( TimeSpan.FromDays( m_Value ) )
{
sign = h;
Priority = TimerPriority.OneSecond;
}
protected override void OnTick()
{
sign.RestrictDecay = false;
}
}
public class AgelessHouseDeed : Item
{
private int m_Value;
[CommandProperty(AccessLevel.GameMaster)]
public int Value
{
get
{
return m_Value;
}
}
[Constructable]
public AgelessHouseDeed() : base( 0x14F0 )
{
Weight = 1.0;
Hue = 1159;
LootType = LootType.Blessed;
Name = "An Ageless House Deed ( 30 Days )";
m_Value = 30;
}
[Constructable]
public AgelessHouseDeed(int value) : base( 0x14F0 )
{
Weight = 1.0;
Hue = 1159;
LootType = LootType.Blessed;
Name = "An Ageless House Deed ( 30 Days )";
m_Value = value;
}
}
正如您所看到的,我正在尝试访问计时器中可构造的m_Value,以将计时器设置为适当的时间。
答案 0 :(得分:0)
您可以使用类名直接访问静态字段/属性。但是,如果某些东西是非静态的,则需要首先创建对象的实例,然后调用field / property。您可以阅读静态类和成员MSDN的所有详细信息。
答案 1 :(得分:0)
如果您要访问non-static
字段,则需要先创建实例然后再访问。
注意:您只能直接使用static
访问classname
个字段。
试试这个:
private int m_Value = new AgelessHouseDeed().Value;