|
今さらながらですが、以下の結果を見てもう少しよく考えた方がよさそうだと思いました。
object[] values = { "ABC", null, "DEF", "100", 200, 300L, 400.0, 500m, 600.0m };
long total = 0L, num;
for (int i = 0; i < values.Length; i++)
{
string ssss = values[i]?.ToString();
if (long.TryParse(values[i]?.ToString(), out num))
{
total += num;
}
}
Console.WriteLine("total: {0}", total);
// 結果は: total: 1500 (2100 ではない)
// 600.0m は ToString() で "600.0" になるのでパースできない
合計の対象とするのが string 型限定なら以下のようにした方が良いかもしれません。
for (int i = 0; i < values.Length; i++)
{
if ((values[i] is string) && long.TryParse((string)values[i], out num))
{
total += num;
}
}
Console.WriteLine("total: {0}", total);
// 結果は: total: 100
|