두 클래스의 값 유형 멤버가 동일한 메모리 주소를 가리 키도록 초기화하면 초기화 중 하나를 초기화하면 다른 하나를 변경하면 다른 하나가 변경됩니다. 또는 함수 내에서 두 변수가 될 수도 있고 변수 또는 상수 값을 다른 유형으로 변환하는 방법이 될 수도 있습니다.2 명의 클래스 멤버가 동일한 메모리 주소를 가리키게합니다
누군가가 이것을 원할만한 이유 중 가장 쉬운 예는 float의 값을 int로 다시 읽고 조작하고 다시 float으로 다시 읽는 클래식 0x5F3759DF fast inverse square root입니다.
나는 이것을 생생하게 보여주는 블로그 게시물을 읽은 것을 기억하지만, 지금은 찾을 수없는 것 같습니다. 기억이 경우, 셋업이 유사했다 :
class Dummy
{
// Make these two point to the same memory address, and initializing one would initialize the other
Int64 a;
Double b;
}
아니면 두 변수
함수의 시작 부분에 있었다. 어느 쪽이든, 난 정말 하나를 초기화하는 자동으로 다른 사람을 초기화하고 "초기화되지 않은"오류없이 일할 것이라고 사용하는 기억 해요. 아마도 그들은 두 가지 유형보다는 오히려 같은 유형이었을 것입니다.FWIW, 저는 현재이 작업을 시도하지 않고 오히려 C#의 기능에 대해 궁금해합니다.
명시 적 필드 오프셋을 사용하여 작업 할 수 있지만 두 배로 명시 적으로 'BitConverter.DoubleToInt64Bits'와 그 반전을 통해 명시 적으로 변환하는 것이 더 쉽습니다. – harold
[C#의 C++ 유니온] 가능한 복제본 (https://stackoverflow.com/questions)/126781/c-union-in-c-sharp) – pvg
필드 대신 속성을 사용하십시오. Int64 A {set; 도망;} – sTrenat