【发布时间】:2019-02-10 21:37:55
【问题描述】:
【问题讨论】:
-
这看起来就像一个 Python 设计走了 C 路径 ;-)
【问题讨论】:
<<property>> 是一个刻板印象(就像 << >> 所接受的 UML 中的大多数东西一样)。在这种情况下,它表明您应该为类的相应命名的私有属性实现 getter 和 setter。例如。对于Status,您将实现getStatus 和setStatus(或为此目的在目标语言中使用的任何内容)。因为Name 也有约束{ readonly },所以您只需实现getName。您可能不得不猜测属性的名称是_bookName。
【讨论】:
[C#],您应该知道property 是C# 语言的一流部分。类可以具有任何类型的属性。 getter 和 setter 可以具有不同的访问级别(例如,getter 是公共的,而 setter 是私有的)。只读属性(无 setter)和只写(无 getter)属性可用。如果属性有一个简单的定义(getter 和 setter 只是访问一个私有的支持字段),那么您可以使用具有简单、易于表达和理解的语法的 auto-property
由于您将其标记为[C#],因此您应该知道属性是 C# 语言的一流部分。类可以具有任何类型的属性。 getter 和 setter 可以具有不同的访问级别(例如,getter 是公共的,而 setter 是私有的)。只读属性(无 setter)和只写(无 getter)属性可用。如果属性有一个简单的定义(getter 和 setter 只是访问一个私有的支持字段),那么您可以使用具有简单、易于表达和理解的语法的自动属性。
class MyClass {
//this is a simple property with a backing field
private int _someInt = 0;
public int SomeInt {
get { return _someInt; }
set { _someInt = value; } //"value" is a keyword meaning the rhs of a property set expression
}
//this is a similar property as an "auto property", the initializer is optional
public int OtherInt { get; set; } = 0;
//this is an auto-property with a public getter, but a protected setter
public string SomeString { get; protected set; }
}
如果省略了 setter(或 getter),则属性变为只读(或只写)。
【讨论】: