【发布时间】:2015-10-18 09:58:04
【问题描述】:
我正在尝试制作一个化学方程式平衡器。为此我制作了一个类元素:
class Element
{
public elemEnum ElemType {get; set;}
public double Amount {get; set;} // How many atoms of this type in the formula
}
*elemEnum 是所有化学元素的枚举。
我想让set 为ElemType 解析一个字符串到枚举,但由于set 只能接受与value 相同类型的值,我决定添加一个方法:
public void SetElemType(string type)
{
this.ElemType = (elemEnum)Enum.Parse(typeof(elemEnum), type);
}
是否可以选择让ElemType 属性只能通过SetElemType 方法设置,而不必使其成为private 并添加GetElemType 方法?
【问题讨论】:
-
C# 中有私有的 getter/setter。
public elemEnum ElemType { get; private set; }。你试过用那个吗? -
对于您的问题,我认为不可能使用自动 setter/getter 方法来接受与变量类型不同的类型。您可以将 ElemType 的 setter 设置为 private,以确保它只能在类中设置。也许是主题,但 C# 中的类型名称应该是帕斯卡大小写,意思是“elemEnum”应该是“ElemEnum”
-
好吧,也许你能做到,这样的财产有什么目的?
-
常见的解决方案是使用私有设置器,如 Caramiriel 的评论所示。您的属性可能仍由您班级的其他成员设置,但这应该不是问题,因为您可以完全控制班级的实施。
-
@EdoPost 我不知道有私有集/获取器。我对大写的不好,我对此有点陌生,我会在未来注意到它。
标签: c# properties enums