필자는 자연스럽게 건망증이 생기기 때문에 잠시 동안 검색을 해왔으며, (추상적 인 클래스, 인터페이스 등?) 뭔가를 빌드하면 좋을 것이라고 생각했다. 내가 쓰는 수업.C# : 추상 클래스를 사용하여 생성자 서명을 강제로 사용 하시겠습니까?
특히 개체의 복제를보다 쉽게하기 위해 새로운 매개 변수에 자체로 입력 된 단일 매개 변수를 사용하는 생성자가 있어야합니다. 나는 이것에 대해 이야기하는 기사/질문을 보았습니다. 그러나이 특정 질문에 대해 물어 보지 못했습니다. 적어도 발견 할 수있는 다른 문항이나 질문을 충분히 이해하지 못했습니다. . 미리 사과드립니다.
나는 추상적 인 클래스, 인터페이스 등에서 생성자를 갖는 것은 실제로 아무 것도하지 않는다. 나는 단지 파생 클래스에서 생성자 서명에 대한 요구 사항을 정의하는 데 관심이 있습니다.
내 이상적인 클래스는 다음과 같이 보일 것이다 :
public class GoodClass
{
public GoodClass(GoodClass goodClass)
{
// copy components of goodClass to this instance
}
}
그래서, 내가 먼저 인터페이스를 연구하기 시작도 추상 클래스에 최대 읽기 시작했다. 아래 코드가 작동한다고 생각했지만 오류가 발생했습니다. 내가 할 수있는 일이 가능한거야? 내 모니터에 스티커 메모를 넣지 않고도 목표를 달성 할 수있는 다른 방법이 있습니까? :)
C++에서abstract class SelfConstructor
{
abstract public SelfConstructor(SelfConstructor) { }
}
class NewClass : SelfConstructor
{
//Required by SelfConstructor:
public NewClass(NewClass newClass)
{
// copy components of newClass to this instance
}
}
복제 방법은 훌륭하지만 실제로 Microsoft는 ICloneable 구현을 권장하지 않습니다. 이는 주로 클론이 깊거나 얕은 경우 인터페이스가 아무 곳도 표시하지 않기 때문입니다. –
@AdiLester 사실, Clone은 원하는대로 할 수 있습니다. 당신이 의미론을 따라 간다면, 기본적으로 복사 작업을위한 인터페이스입니다. – BradleyDotNET
... 여기에 [MSDN] (http://msdn.microsoft.com/en-us/library/system.icloneable%28v=vs.110%29.aspx)의 인용구 : "Clone의 호출자는 예측 가능한 복제 작업을 수행하는 방법에 따라 ICloneable을 공용 API에 구현하지 않는 것이 좋습니다. " –