2009-12-18 9 views
0

operator =을 C#으로 오버로드 할 수 있습니까?과부하 연산자 = in C#

내가 전화 할 때 =, 그냥 다른 인스턴스를 참조하도록 왼쪽 참조를 만드는 대신 속성을 복사하려고합니다.

+2

관련 메모 : http://freeworld.thc.org/root/phun/unmaintain.html. –

+0

@Nathan, 우스운 포스트. – Benny

+0

@ 네이선 : 이것은 걸작품입니다. 거기에 꽤 좋은 조언. –

답변

9

대답은 no이다 할당 연산자 자체 (=)을 오버로드 할 수 없다

참고있다. 할당은 항상 값의 간단한 비트 단위 복사본을 변수에 수행합니다.

가능한 경우에도 권장하지 않습니다. 코드를 읽는 사람은 할당 연산자가 과부하되었을 가능성이 있다고 생각하지 않습니다. 개체를 복사하는 방법이 훨씬 명확 해집니다.

+0

질문의 제목을 읽었을 때 나는 이것이 진심으로 희망적이었습니다. 고맙게도 이것은 C++로 큰 혼란을 야기하는 또 다른 방법은 아닙니다. –

0

개체에서 .CopyProperties (ByVal yourObject YourObject) 메서드를 만들지 않는 이유는 무엇입니까?

내장 개체를 사용하고 있습니까?

+0

아니요, 사용자 정의 클래스 – Benny

2

= 연산자에 부하를 걸 수 없습니다. 게다가, 당신이하려는 것은 연산자의 의미를 완전히 바꿀 것이기 때문에 다른 말로 나쁜 생각입니다.

복사 의미를 제공하려면 Clone() 메서드를 제공하십시오.