从类型访问数据的更简洁方法

时间:2019-07-15 16:19:57

标签: c# naming

所以,这是关于同一主题的两个问题。

我一直在寻找使我从类型中访问数据更干净的方法。例如,假设我正在制作某种Health类,并为此编写了一些字段。

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;
}

它会有类似的预期效果。

编辑:另外,我知道这是不必要的,但是我仍然想要它。 (很抱歉这个问题有小错误,已解决)

1 个答案:

答案 0 :(得分:1)

您可以将运行状况类中的隐式运算符添加到返回当前值的short中:

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