수색…


문자열을 정수로 변환 중

명시 적으로 stringinteger 로 변환하는 데 사용할 수있는 다양한 방법이 있습니다. 예를 들면 다음과 같습니다.

  1. Convert.ToInt16();

  2. Convert.ToInt32();

  3. Convert.ToInt64();

  4. int.Parse();

그러나 입력 문자열에 숫자가 아닌 문자가 포함되어 있으면이 모든 메서드는 FormatException 을 throw합니다. 이를 위해 우리는 예외 처리 ( try..catch )를 추가로 작성하여 그러한 경우에 처리해야합니다.


예제 설명 :

그럼, 우리의 의견을 알려주십시오 :

string inputString = "10.2";

예제 1 : Convert.ToInt32()

int convertedInt = Convert.ToInt32(inputString); // Failed to Convert 
// Throws an Exception "Input string was not in a correct format."

참고 : 같은 다른 언급 된 방법에 대한 간다 즉 - Convert.ToInt16();Convert.ToInt64();

예제 2 : int.Parse()

int convertedInt = int.Parse(inputString); // Same result "Input string was not in a correct format.

어떻게 우회합니까?

앞에서 말했듯이 예외를 처리하기 위해 우리는 보통 다음과 같이 try..catch 가 필요합니다.

try
{
    string inputString = "10.2";
    int convertedInt = int.Parse(inputString);
}
catch (Exception Ex)
{
    //Display some message, that the conversion has failed.         
}

그러나 try..catch 사방에 사용하는 것은 좋은 습관이 아니며, 입력이 잘못되면 0 을주고 싶을 수도있는 시나리오가있을 수 있습니다. (위의 방법을 따르면 우리는 convertedInt 0 을 대입해야합니다. catch 블록). 이러한 시나리오를 처리하기 위해 우리는 .TryParse() 라는 특별한 메소드를 사용할 수 있습니다.

.TryParse() 당신에게로 출력 줄 것이다 내부 예외 처리 갖는 방법 out (매개 변수, 그리고 변환 상태를 나타내는 부울 값을 반환 true , 변환이 성공했는지를 false 이 실패 할 경우). 반환 값에 따라 변환 상태를 결정할 수 있습니다. 보기 하나 예 :

구문 1 : 반환 값을 Boolean 변수에 저장합니다 .

 int convertedInt; // Be the required integer
 bool isSuccessConversion = int.TryParse(inputString, out convertedInt);

우리는 isSuccessConversion 후에 Variable isSuccessConversion 을 체크하여 변환 상태를 확인할 수 있습니다. 이 거짓 인 경우의 값 convertedInt 없을 것 0 (당신이 원하는 경우에 반환 값을 체크 할 필요 0 변환 실패를).

구문 2 : if 와 함께 반환 값 확인

if (int.TryParse(inputString, out convertedInt))
{
    // convertedInt will have the converted value
    // Proceed with that
}
else 
{
 // Display an error message
}

구문 3 : 반환 값을 확인하지 않고 반환 값을 신경 쓰지 않는다면 다음을 사용할 수 있습니다 (변환 여부는 0 입니다)

int.TryParse(inputString, out convertedInt);
// use the value of convertedInt
// But it will be 0 if not converted


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow