2017-12-10 1 views
1

변경할 권한이없는 일부 코드로 작업하고 있습니다. 이 코드는 단일 정수를 반환하며, 첫 번째 숫자는 현재 사용자의 권한 상태를 나타냅니다. 예를 들어 ID가 1234 인 승격 사용자는 11234의 userID를 반환합니다. 승격되지 않은 동일한 사용자는를 반환합니다.이 사용자 참조를 깔끔하게 연결하는 동안 사용자 높이의 부울 값을 저장해야합니다 갈라져.정수의 첫 번째 숫자 테스트

정수를 문자열 값으로 변환하여 첫 번째 문자를 가져올 수 있습니다. 단, 정수에서 문자열로 변환하고, 연산을 수행하고, 정수로 변환 한 후 부울을 필요하지 않습니다. 이 과정을 어떻게 단순화 할 수 있습니까?

bool isElevated = Convert.ToBoolean(Convert.ToInt32((resultID.ToString()).Substring(0, 1))); 
+1

제 자리 [영이 아닌 값] 리턴하면 이미 정수 아니라, 0이다. –

+0

@AnthonyPegram 필자는 문서와 반환 유형간에 약간의 차이가 있어야한다는 것을 깨달았습니다. 앞의 0이있는 콘솔에 결과를 출력하면 앞의 0이 출력되므로 확실히 클리핑되지 않습니다. 그러나 정수 앞에 0이 있으면 정수가 아닙니다. 오래 걸릴 수 있을까요? –

+1

intellisense가 유형을 공개하지 않습니까? 0이 아닌 값이 0이고 -1

답변

1

정수의 첫 번째 숫자는 0 일 수 없습니다! 유일한 예외는 정수 0 일 때입니다.

정보 저장 방법에주의해야합니다. 누군가 elses 자동 매직 코드에서 int을받은 경우 int 앞에 0이 있으면 숫자 값에 중요하지 않으므로 잘리지 않을 것임을 이해해야합니다. 01은 컴퓨터에 따라 여전히 1입니다. 이 문제를 보여주는

샘플 코드 :

//Their process should add zero to beginning 
bool isUserElevated = false; 
//The ID before auto-magic 
string yourInitialID = "1234"; 
//Other person's process of adding identifier 
if (isUserElevated == true) 
{ 
    yourInitialID = "1" + yourInitialID; 
} 
else 
{ 
    yourInitialID = "0" + yourInitialID; 
} 

//uh oh whered my zero go 
int realID = int.Parse(yourInitialID); 
//The computer parsedas 1234 



//Your process of identifying for bool 
bool myNeededVar = false; 

Console.WriteLine(realID); 
Console.ReadKey(); 
관련 문제