我正在尝试制作一个化学方程式平衡器。为此,我创建了一个类元素:

class Element
{
    public elemEnum ElemType {get; set;}
    public double Amount {get; set;} // How many atoms of this type in the formula
}

* elemEnum 是所有化学元素的枚举。

我想让 setElemType 将字符串解析为枚举,但由于 set 只能接收与 value 相同类型的值,因此我决定添加一个方法:
public void SetElemType(string type)
{
    this.ElemType = (elemEnum)Enum.Parse(typeof(elemEnum), type);
}

是否有一个选项可以让 ElemType 属性只能由 SetElemType 方法设置,而不必使其成为 private 并添加 GetElemType 方法?

最佳答案

由于评论中最明显的解决方案还没有写成答案:
使用 private setter

class Element
{
    public ElemEnum ElemType {get; private set;}
    public double Amount {get; set;}

    public void SetElemType(string type)
    {
        this.ElemType = (ElemEnum)Enum.Parse(typeof(ElemEnum), type);
    }
}
这样, ElemType 只能从您自己的类中设置。

关于c# - 使属性只能通过特定方法设置,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33196609/

10-09 19:43