여러 생성자가있는 경우 다른 생성자를 호출하는 장점은 무엇입니까? 감사합니다.다른 생성자를 하나씩 호출하는 경우
답변
같은 장점은 당신이 얻을 : 당신이 기본 생성자에 기본값을 전달하려는 경우 동일한 코드
public class Person
{
public Person(string name,string lastName)
{
Name = name;
LastName = lastName;
}
public Person(string name, string lastName,string address):this(name,lastName)
{
//you don't need to set again Name and Last Name
//as you can call the other constructor that does the job
Address = Address;
}
public string Name { get; set; }
public string LastName { get; set; }
public string Address { get; set; }
}
자신을 반복하지 마십시오.
하나의 생성자 구현 변경은 다른 모든 생성자에도 즉시 영향을 미칩니다. 코드 복사 및 붙여 넣기가 좋지 않으므로 피해야합니다. 이 방법은 오버로드를 수행 할 때
관련 : http://stackoverflow.com/questions/2490884/why-is-copy-and-paste-of-code-dangerous/2490897#2490897 – Oded
를 반복하지 않습니다.
public class YourClass
{
private int SomeInt;
public YourClass() : this(0)
{
// other possible logic
}
public YourClass(int SomeNumber)
{
SomeInt = SomeNumber;
}
}
이는 DRY 원칙을 다음과 (자신에게를 반복하지 마십시오). 간단한 예이지만 생각을 설명해야합니다.
기본 또는 null 값을 다른 생성자에 전달할 때 사용했습니다. 위의 경우 사용자는 생성자를 호출 할 때 null을 전달할 필요가 없습니다. 아무 것도하지 않고 호출 할 수 있습니다.
public class Widget(){
public Widget() : this(null){
}
public Widget(IRepository rep){
this.repository = rep;
}
}
이미 게시 된 답변을 보면 난 것이다 당신 항상 아래로 대부분의 전문 생성자에 기본 생성자에서 길을 걷는 사람들. 주변에 항상 동일한에게 다른 방법을 시도하는 것은 코드의 중복이나 문제에 이르게 :
좋은 방법 :
public class Foo()
{
public Foo()
: this(String.Empty)
{ }
public Foo(string lastName)
: this(lastName, String.Empty)
{ }
public Foo(string lastName, string firstName)
: this(lastName, firstName, 0)
{ }
public Foo(string lastName, string firstName, int age)
{
LastName = lastName;
FirstName = firstName;
Age = age;
_SomeInternalState = new InternalState();
}
}
나쁜 방법 :
public class Foo()
{
public Foo(string lastName, string firstName, int age)
: this(lastName, firstName)
{
Age = age;
}
public Foo(string lastName, string firstName)
: this(lastName)
{
FirstName = firstName;
}
public Foo(string lastName)
: this()
{
LastName = lastName;
}
public Foo()
{
_SomeInternalState = new InternalState();
}
}
의 문제 두 번째 예제는 모든 매개 변수로 수행해야 할 부분이 이제는 모든 생성자에 대해 혼란스럽고 대신 하나의 (가장 특수화 된) 구현 된 것입니다. 이 클래스에서 파생되기를 원한다고 상상해보십시오. 두 번째 예제에서는 모든 생성자를 재정의해야합니다. 첫 번째 예제에서는 모든 생성자를 완전히 제어 할 수 있도록 가장 특수화 된 생성자를 재정의해야합니다.
- 1. PHP에서 생성자를 명시 적으로 호출하는 경우
- 2. 다른 생성자를 호출하는 생성자 : 성능 문제가 있습니까?
- 3. 다른 생성자 안에 복사 생성자를 호출하는 중
- 4. 시도하십시오, 기본 생성자를 호출하는 내부 생성자를 캐치하십시오
- 5. 임시 개체로 생성자를 호출하는 중
- 6. 생성자를 호출하는 대입 연산자가 깨졌습니다.
- 7. 이 생성자를 호출하는 방법은 무엇입니까?
- 8. 복사 생성자가 다른 클래스의 기본 생성자를 호출하는 이유는 무엇입니까?
- 9. 클래스와 다른 제네릭 형식을 가진 생성자를 호출하는 중
- 10. Java - extends는 다른 클래스의 생성자를 호출하는 것처럼 보입니다.
- 11. 안드로이드에서 생성자를 한 페이지에서 다른 페이지로 호출하는 방법은 무엇입니까?
- 12. 다른 정적 클래스 메서드를 호출하는 생성자를 사용하여 클래스를 동적으로 만듭니다.
- 13. C#에서 특정 생성자를 null로 호출하는 중
- 14. popupscreen이 닫히면 MainScreen의 생성자를 호출하는 방법
- 15. 최상위 클래스 생성자를 호출하는 방법은 무엇입니까?
- 16. 매개 변수화 된 생성자에서 생성자를 호출하는 방법?
- 17. C++에서 명시 적으로 생성자를 호출하는 이유
- 18. 캐슬 윈저에게 매개 변수없는 생성자를 호출하는 방법
- 19. Visual Basic에서 C++ 생성자를 호출하는 방법
- 20. Bash에서 Perl 생성자를 호출하는 방법은 무엇입니까?
- 21. Java에서 상속 된 생성자를 호출하는 생성자
- 22. 클래스 내부에서 생성자를 호출하는 방법은 무엇입니까?
- 23. PHP에서 Mono를 호출하는 경우
- 24. R : 다른 색상으로 다른 ECDF를 하나씩 그려보십시오.
- 25. RegEx는 두 가지 경우 모두 하나씩 사용합니까?
- 26. 소켓에서 BeginAccept를 호출하는 경우
- 27. 생성자가 다른 생성자를 호출하는지 확인
- 28. 다른 클래스에서 이동 생성자를 정의해야합니까?
- 29. 여러 개의 호출 작업을 하나씩 호출하는 방법은 무엇입니까?
- 30. .Net Reflection : 인터페이스를 매개 변수로 사용하는 생성자를 호출하는 방법
음, 다른 *에서 * 메소드 *를 호출하면 어떤 이점이 있습니까? 생성자는 new 연산자의 결과가 생성되기 전에 호출되는 * 메소드 * 일뿐입니다. –