从类型访问数据的更简洁的方法
Cleaner ways of accessing data from types
所以,这是关于同一主题的两个问题。
我一直在寻找使我从类型中访问数据更干净的方法。举个例子,假设我正在制作某种 Health
class,我为它写了一些字段。
public class Character {
public Health Health;
}
public class Health {
public short Current;
public short Maximum;
}
现在这行得通了,但我正在寻找一种可以避免在我想获取当前健康值时使用 Health.Current
的方法。像这样:
public class Health {
private short Current;
public short Maximum;
public short this {
get { return Current; }
set { Current= value; }
}
}
我原以为这会起作用,但不幸的是它不起作用。有什么办法可以做到这一点?
如果没有,那么有什么方法可以代替:
public class Character {
public short Health;
public short Health.Maximum;
}
它会产生类似的预期效果。
编辑:另外,我知道这是不必要的,但它仍然是我想要的。 (抱歉问题中的小错误,已修复)
您可以将健康 class 中的隐式运算符添加到 returns 当前值的空头:
public class Health
{
public static implicit operator short(Health health)
{
return health.Current;
}
public short Current;
public short Maximum;
}
这样使用:
Health h = new Health { Current = 20, Maximum = 100};
short current = h;
Console.WriteLine(current); // 20
所以,这是关于同一主题的两个问题。
我一直在寻找使我从类型中访问数据更干净的方法。举个例子,假设我正在制作某种 Health
class,我为它写了一些字段。
public class Character {
public Health Health;
}
public class Health {
public short Current;
public short Maximum;
}
现在这行得通了,但我正在寻找一种可以避免在我想获取当前健康值时使用 Health.Current
的方法。像这样:
public class Health {
private short Current;
public short Maximum;
public short this {
get { return Current; }
set { Current= value; }
}
}
我原以为这会起作用,但不幸的是它不起作用。有什么办法可以做到这一点?
如果没有,那么有什么方法可以代替:
public class Character {
public short Health;
public short Health.Maximum;
}
它会产生类似的预期效果。
编辑:另外,我知道这是不必要的,但它仍然是我想要的。 (抱歉问题中的小错误,已修复)
您可以将健康 class 中的隐式运算符添加到 returns 当前值的空头:
public class Health
{
public static implicit operator short(Health health)
{
return health.Current;
}
public short Current;
public short Maximum;
}
这样使用:
Health h = new Health { Current = 20, Maximum = 100};
short current = h;
Console.WriteLine(current); // 20