2009-09-06 6 views
4

에 부울을 추가하는 것입니다 내가 (C#에서) 스택에 float 값을 넣을 수있는 방법 : 발광 방법을 사용하여ILGenerator : 어떻게 스택 여기

ILGenerator gen = method.GetILGenerator(); 
gen.Emit(OpCodes.Ldc_R4, (float)12.5); 

가 어떻게 스택에 부울 값을 넣을 수 있습니다?

답변

17

평가 스택에는 부울 값이 없습니다. bool, char, byte, ushort, uint 및 해당 부호가있는 변형은 모두 4 바이트 부호있는 정수 (i4)로 표시됩니다.

사실 :

ldc.i4.1 

거짓 :

ldc.i4.0 
+0

모든 것이 4 바이트 부호있는 정수로 표현되는 경우, 메모리의 장점은 값이있는 경우 대신 (예를 들어) USHORT의 바이트가 사용된다 바이트 최대 값을 초과하지 않습니까? – Hybris95

+0

@ Hybris95 평가 스택은 개체의 필드와 다릅니다. 필드 (특히 구조체의 필드)와 배열 요소는 메모리를 절약하기 위해보다 긴밀하게 압축 될 수 있습니다. –