2015-01-24 10 views
-2

mscolib.dll 어셈블리에 비틀어 졌을 때 Int32가 구조체임을 알았지 만 Int32에 "="연산자를 적용 할 수없는 이유는 무엇입니까? Int32 num=5; .it Int32 구조체에서 "="연산자를 오버로드하지 않습니다.어떻게 "="연산자가 작동합니까?

+1

'+'연산자는 무엇을해야합니까? –

+0

죄송합니다. 실수를했습니다. 대신 "="여야합니다. – Hongyaoshun

답변

1

= 연산자를 오버로드 할 수 없습니다. Overloadable Operators을 참조하십시오. = 연산자는 항상 오른쪽의 값을 왼쪽의 변수에 할당합니다.

값 유형 (struct)의 경우 전체 값이 변수에 복사됨을 의미합니다.

Int32과 같은 유형의 경우 해당 복사를 수행 할 수있는 프로세서의 지침이 내장되어 있습니다. 한꺼번에 전체 값을 복사 할 수있는 명령어가 없기 때문에 구조체의 바이트를 변수에 복사하는 루프가 있습니다.