示例代码:
public struct State
{
private readonly byte state;
private State (byte pState)
{
state = pState;
}
// property...
public static State StateOne
{
get
{
return new State (1);
}
}
// or...
public static readonly State StateOne = new State (1);
}
我应该使用属性还是字段?在这个例子中,性能并不重要。
答案 0 :(得分:1)
除非您将该属性用作新实例的Factory,否则应将返回的“new State(1)”缓存在私有成员中,并在第一次调用之后返回该属性,这将初始化它。 (单身人士)
进一步明确:
你写的内容的不同之处在于该字段总是指向同一个实例,而属性总是创建一个新实例并返回它,因此该属性不断创建新实例,这可能不是你想要的,也可能是性能问题取决于具体情况。
答案 1 :(得分:1)
在我看来,它是领域,因为它是你需要的最小值,它可能更具可读性。但实际上,在给定值传递语义的情况下,在这种结构中呈现的这种微不足道的情况没有实际差异。
特别是 - 具有缓存的本地字段的属性的参数(如此处的另一个答案))在引用相等的基础上完全无效,因为根据它们的定义,值类型永远不能被引用 - 相等。
答案 2 :(得分:1)
我想在这里使用字段而不是属性。看看MS人员如何做类似的工作:
//String.cs
public int Length { get; } //string has a property named Length
public static string Empty = ... //string has a public field named Empty
尝试认为“字符串有一个名为空的公共属性”,不,空不是字符串的属性。在你的情况下情况几乎相同。 “州有一个名为 One 的财产”听起来真的很受欢迎。