2013-07-20 2 views
0
를 사용하여있는 방법은

나는 그런 내가 값이 나는 함께 지정 최소 및 최대 범위 내에있는 경우 확인하려면이tryparse이 최소 및 최대 한계

public static bool GetInteger(string stringToConvert, out int intOutValue, int minLimit, int maxLimit) 

등의 방법을 만들려고 노력하고있어 가치가있다. 구문 분석은

  int.TryParse(stringToConvert, out intOutValue) 

하지만 "intOutValue"의 값이 범위 내에있을 경우 어떻게 지금 확인합니까? 그것은 그것이 부울 값이라는 것을 계속해서 알려줍니다 ... 이것을하는 방법에 대한 도움은 크게 appriciated 것입니다! (프로그래밍에 익숙하지 않고 특히 C#에서)

답변

1

당신이 TryParse에 대한 호출의 결과에 따라 비교를 수행하려는 경우는 거기에 문제가있다; 성공 여부를 나타내는 부울을 반환합니다 (따라서 시도). 따라서 채워진 것으로서 inOutValue을 비교해야합니다.

public static bool GetInteger(string input, out int result, int min, int max) { 
    return int.TryParse(input, out result) && (result >= min && result <= max); 
} 

은 여기 out PARAM 필요가 없습니다, 그리고 난 당신이 실제로 값이 사후에 액세스 할 수 있도록하려는 경우가 아니면 메소드 이름이 나쁘다 말할 것입니다.

+0

아, 이것이 내 문제 였어! 나는 잘못된 것을 비교하려고 애썼다. 감사. – Ibyc

+0

또한 예, 값을 액세스 할 수있게하려고합니다. 다른 프로그램 (윈도우 폼 등)에서이 값을 사용하여 문자열에서 int 및 double을 변환 할 수 있습니다. 편집 :이 메서드는 단지 min 값과 최대 값 (그냥 maxvalue 전달)을 사용하여 오버로드 할 수있는 방법이 있습니까? 아니면 완전히 새로운 방법이 필요합니까? – Ibyc

0

유효한 범위 내인지, 유효한 int인지 여부를 확인하려는 것처럼 보입니다. 이 경우에 당신은 할 수 :

public static bool GetInteger(string stringToConvert, out int intOutValue, int minLimit, int maxLimit) 
{ 
    bool parsed = int.TryParse(stringToConvert, out intOutValue); 
    return parsed && intOutValue >= minLimit && intOutValue <= maxLimit; 
} 
+0

아하, 알았어. 코드 예제도 감사드립니다. – Ibyc

+0

'Parse'가 정수를 반환하기 때문에 이것은 작동하지 않습니다. –

+0

@GrantThomas - 예, 'TryParse'를 의미했습니다. 고마워요. – Lee