내가 두 생성자를 가진 클래스가 변수. secondaryObj
은 그렇지 않습니다. 분명히 MyObjGroup(myObj)
또는 MyObjGroup(myObj, null)
으로 전화하여 동일한 결과를 얻을 수 있습니다.검증 생성자는
제가 처음으로 생각한 것은 null
을 primaryObj
으로 확인하고 ArgumentNullException
을 던집니다. 또한 보조 코드에서 코드를 복제해야하므로이 코드를 속성 설정자로 이동하는 것이 좋습니다.
private MyObj _primaryObj;
public MyObj PrimaryObj
{
get {return _primaryObj;}
private set
{
if(value == null) throw new ArgumentNullException("value", "PrimaryObj cannot be null");
_primaryObj = value;
}
}
그러나, 속성의 매개 변수의 이름은 primaryObj
을 호출됩니다의 ctor에서 value
동안이다. 다른 ctor (천국 금지)는 다른 이름으로 부를 수 있으므로 올바른 이름을 가지고 있다는 보장이 없습니다.
여기에서 권장되는 조치는 무엇입니까?
정말 '기본 (primaryObj)'하지'이 (primaryObj)'를 무엇입니까? – Arne
'base (이)가 아니라 두번째 ctor에서'this (primaryObj)'를 사용 하시겠습니까? –
예, 고쳐졌습니다. 날카로운 눈을 가져 주셔서 감사합니다. – StriplingWarrior