2013-06-10 7 views
1

나는 happing 있는지 잘 모릅니다하지만 난 get 메소드에 매개 변수로 수 1를 보내고 난 다음 결과잘못된 매개 변수 C#을 MVC 4

enter image description here

모든 것을 정상으로 0x00000001을 얻을 때 메신저 디버깅. 그것들은 그 엔티티를 삭제하기 위해 매개 변수를 int로 변환했지만 reciver 메소드에서 결과는 틀린가 ??

enter image description here

나는 int.Parse와도 시도했지만 같은 일이.

여기 무슨 일입니까?

+0

16 진수입니다. – jszigeti

+0

나는 엔티티를 삭제할 수는 없지만 그 값은 그렇지 않습니까? – Ligth

+0

'0x000001 == 1 ', 마지막 비트까지. –

답변

4

어떤면에서 잘못 되었나요? '1'을 문자열로 전달했으며 id 변수의 값은 1입니다.이 숫자는 1, 0x1, 00001, 0x00001 또는 이와 비슷한 숫자로 표시됩니다. 그것은 같은 가치입니다. 디버거는 제로 패딩 된 16 진수 형식으로 사용자에게 표시합니다.

데이터와 데이터의 텍스트 표현을 구별하는 것이 중요합니다. 특히 많은 경우에 동일한 값의 텍스트 표현이 여러 개있을 수 있습니다. 예를 들어,이 세 가지 라인을 고려

int x = 0x10; 
int x = 16; 
int x = 0x000010; 

모든 정확히 동일합니다. 이들은 x이라는 변수에 16의 값을 저장합니다. 코드가 컴파일 될 때까지 소스 코드에서 어떤 숫자 리터럴 형식을 사용했는지 알 수 없습니다.

+0

하지만 엔티티를 제거하려고 할 때 찾을 수 없습니다. 내가 왜 그렇게 말하니? 엔티티가 삭제되지 않기 때문입니다. – Ligth

+0

또는 엔터티가 16 진수 값을 해석하고 엔터티를 삭제할 수 있습니까? – Ligth

+0

@Ligth : 그렇다면 ID가 1 인 엔티티가없는 것 같습니다. 이는 완전히 다른 문제입니다. 엔티티 나 엔티티에 대한 정보가 없어도 삭제할 수 없습니다. 그러나 가치 *는 * 1입니다. –