operator =을 C#으로 오버로드 할 수 있습니까?과부하 연산자 = in C#
내가 전화 할 때 =, 그냥 다른 인스턴스를 참조하도록 왼쪽 참조를 만드는 대신 속성을 복사하려고합니다.
operator =을 C#으로 오버로드 할 수 있습니까?과부하 연산자 = in C#
내가 전화 할 때 =, 그냥 다른 인스턴스를 참조하도록 왼쪽 참조를 만드는 대신 속성을 복사하려고합니다.
대답은 no이다 할당 연산자 자체 (=)을 오버로드 할 수 없다
참고있다. 할당은 항상 값의 간단한 비트 단위 복사본을 변수에 수행합니다.
가능한 경우에도 권장하지 않습니다. 코드를 읽는 사람은 할당 연산자가 과부하되었을 가능성이 있다고 생각하지 않습니다. 개체를 복사하는 방법이 훨씬 명확 해집니다.
질문의 제목을 읽었을 때 나는 이것이 진심으로 희망적이었습니다. 고맙게도 이것은 C++로 큰 혼란을 야기하는 또 다른 방법은 아닙니다. –
개체에서 .CopyProperties (ByVal yourObject YourObject) 메서드를 만들지 않는 이유는 무엇입니까?
내장 개체를 사용하고 있습니까?
아니요, 사용자 정의 클래스 – Benny
=
연산자에 부하를 걸 수 없습니다. 게다가, 당신이하려는 것은 연산자의 의미를 완전히 바꿀 것이기 때문에 다른 말로 나쁜 생각입니다.
복사 의미를 제공하려면 Clone()
메서드를 제공하십시오.
관련 메모 : http://freeworld.thc.org/root/phun/unmaintain.html. –
@Nathan, 우스운 포스트. – Benny
@ 네이선 : 이것은 걸작품입니다. 거기에 꽤 좋은 조언. –