我已經定義的對象爲:如何在C#複製只讀對象並修改副本
readonly List<object> Params;
我需要存儲在列表中爲整數的值,但所有的鑄造方法我都試過像Convert
類,使用(int)
明確的類型轉換提供以下錯誤:
Unhandled Exception: System.InvalidCastException
我試圖打印的元素,這讓我的對象的整數值,但複製列表保持readonly
屬性,我無法使用在我的價值節目。
我已經定義的對象爲:如何在C#複製只讀對象並修改副本
readonly List<object> Params;
我需要存儲在列表中爲整數的值,但所有的鑄造方法我都試過像Convert
類,使用(int)
明確的類型轉換提供以下錯誤:
Unhandled Exception: System.InvalidCastException
我試圖打印的元素,這讓我的對象的整數值,但複製列表保持readonly
屬性,我無法使用在我的價值節目。
的readonly
具有所有存儲在列表中的值沒有影響。它僅適用於List
對象,但不適用於其內容。所以忘了它,這裏沒有錯。
相反,必須有一個轉換的問題與存儲在Params
值的至少一個(順便說一句。:除了明確說)......
您可以使用int.TryParse(...)
找出哪個值是。
你可以使用Linq
要做到這一點,對樣品中加入這個命名空間
using System.Linq;
,並嘗試使用該Cast<T>
方法來轉換,
List<int> ints = Params.Cast<int>();
您也可以使用Select
方法,如果你需要做更具體的事情,例如:
List<int> ints = Params.Select(x => {
// its a scope, and you can do it here...
if (something)
return (int) x;
else if (other condition)
return int.Parse(x.ToString());
return x; // other custom conversions...
}).ToList();
Params.Cast
'Params.Cast
@dasheddot不只是更優雅,更可以更多高效。 –
如果在列表中的元素都是字符串,使用
int value = int.Parse((string)Params[i]);
如果元素詮釋的單子都是整數,使用
int value = (int)Params[i];
你在這個列表中是否有整數值,或者你有保存整數的字符串? –
「Params」的對象類型是什麼?列表中包含什麼 – DGibbs
輸入是什麼?你已經試過的代碼是什麼?讓我們知道更多的信息;) – dasheddot