2016-11-07 1 views
0

문자열을 쉼표로 문자열을 분할하여 먼저 int 배열로 변환 한 다음 int 배열로 변환해야했습니다.캐스트 <int> 방법은 C#에서 형식 캐스팅이 아닙니다

과 다음 줄은

int[] array = input.Split(',').Select(obj=>Convert.ToInt32(obj)).ToArray(); 

을하고있다하지만 난 캐스트 확장 방법을 사용하여 다른 방법으로이 일을 원했다.

int[] array = input.Split(',').Cast<int>().ToArray(); 

그러나 캐스트 확장을 사용하면 잘못된 캐스트 연산 예외가 발생합니다.

캐스트하기 전에 ofType()을 적용했는데 실제로는 필요하지 않지만 여전히 작동하지 않습니다.

int[] array = input.Split(',').OfType<string>().Cast<int>().ToArray(); 

내가 여기서 만들고있는 실수.

나는 적절한 방법으로 캐스트 방법을 사용하고 있습니다.

+0

@ 피터 일할 수있는'캐스트 ()'방법 –

+0

먼저 내 질문을 읽어 보시기 바랍니다 객체가 이미 올바른 형식이어야한다. '캐스트 ()'메소드는 데이터 만 재 해석하지만 변환은하지 않습니다. C#에서 문자열을 'int'로 구문 분석하는 올바른 기술은 표시된 복제본을 참조하십시오. –

+0

@PeterDuniho, 그래서 그것은 캐스팅을 입력하지 않습니다 왜 캐스트는 –

답변

1

stringint으로 변환하려면 int.Parse을 사용해야합니다. C#에서 문자열은 이 아니며은 정수로 직접 형 변환 될 수 없습니다.

input.Split(',').Select(int.Parse).ToArray() 
+0

실수 캐스팅 방법은 무엇입니까? 나는 이미 작동중인 쿼리가 있습니다.왜 캐스팅 방법을 사용할 수없는 이유는 무엇입니까 –

0

다음 방법을 사용할 수도 있습니다.

int[] array = Array.ConvertAll(input.Split(','), int.Parse); 
+0

물론 캐스팅 방법이 무엇이 잘못 되었습니까? –

+0

@ YogeshJoshi'캐스트 '이 (가) 귀하의 경우 작동하지 않습니다. '캐스트 '은'IEnumerable' 인터페이스의 확장 된 메소드이고 문자열 배열의 타입은'IEnumerable '입니다. 예를 들어'AsEnumerable' 메서드를 사용하여 배열을 열거 형으로 형변환하면 배열 형식이'System.Collections.Generic.IEnumerable ' – Shell

관련 문제