2016-11-07 37 views
0

我必須先通過用逗號分割字符串,然後轉換爲int數組來將字符串轉換爲int數組。cast <int> c#中的方法不是類型轉換

和下面一行是工作的罰款

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

但我想做到這一點,使用鑄鐵擴展方法不同的方式。

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

但是使用強制擴展它會拋出無效的投射操作異常。

我甚至在施放之前應用了Type(),這並不是真的需要,但仍然不起作用。

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

我在這裏犯了什麼錯誤。

我正在以適當的方式使用投射法。

+0

@peter請閱讀我的問題第一 –

+0

對於'演員()'方法來工作,該對象必須是正確的類型了。 'Cast ()'方法只重新解釋數據,它不做任何轉換。在C#中查看標記爲重複的正確技術,將字符串解析爲「int」。 –

+0

@PeterDuniho,所以它不會打字,那麼爲什麼它被命名爲cast –

回答

1

您應該使用int.Parsestring轉換爲int。在C#中,一個字符串是而不是能夠被直接轉換爲整數。

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

什麼是錯誤的投擲方法當然我已經有一個工作查詢。爲什麼我不能使用投法 –

0

您還可以使用以下方法。

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

當然,我可以問我的問題鑄法的問題 –

+0

@YogeshJoshi'演員'不會在你的情況下工作。 'Cast '是'IEnumerable'接口的擴展方法,你的字符串數組的類型是'IEnumerable '。例如,如果您使用'AsEnumerable'方法將數組強制轉換爲枚舉,那麼您將看到該數組的類型爲'System.Collections.Generic.IEnumerable ' – Shell