Ant*_*son 0 c# oop design-patterns
这样做的正确方法是什么?属性setter可能包含的代码多于acctual赋值.可以说我有以下代码:
class Person
{
private String name;
public Person(String name)
{
this.name = Name
}
public String Name
{
get;
set {
if(String.Empty.Equals(value)) return;
this.name = value;
}
}
}
Run Code Online (Sandbox Code Playgroud)
上面的代码是错误的,因为我没有通过属性分配?
Name而不是字段name,即使是在同一个类中,也要确保始终使用get/ setmethods 中的逻辑.set实现,因此还必须显式指定get要编译的示例的实现.String.IsNullOrEmpty,而不是像您的String.Empty.Equals(value)代码那样的其他方法.属性通常应该以不令人惊讶的方式表现.在你跑完之后person.Name = "";,你会期待这个Name属性,而""不是以前的属性.如果设置null或空名称无效,则在传递此值时应抛出异常.
class Person
{
private String name;
public Person(String name)
{
this.Name = name;
}
public String Name
{
get {
return this.name;
}
set {
if(String.IsNullOrEmpty(value))
throw new ArgumentException("Name is required", "value");
this.name = value;
}
}
}
Run Code Online (Sandbox Code Playgroud)