【问题标题】:TryParse to through multiple valuesTryParse 通过多个值
【发布时间】:2012-02-14 06:27:40
【问题描述】:

我一直在用

 int.TryParse(_dtPOSettings.Rows[0]["PASID"].ToString(), out categoryID);

将字符串值转换为 int。当 PASID 值是单个值时,这可以正常工作。 现在我将多个值作为“,”分隔列表存储在数据库中。当我取回它们时,我将它们拆分并将它们存储到一个字符串数组中。现在我希望 int.TryParse 获取字符串数组的值并将它们转换为 int 值并将它们放回 int 类型列表。 但是 out 参数不支持这一点。请建议如何编码。

int.TryParse(PASIDValues[i].ToString(), out PASIDintValues[i]);

提前致谢。

【问题讨论】:

  • 遍历字符串数组并尝试解析每个元素;结果将进入您的列表。
  • "1,2,3,4,5".Split(',').Select(n => Convert.ToInt32(n)).ToList()

标签: c# casting


【解决方案1】:

只需声明一个变量来临时保存值,如果解析成功,将值赋给数组索引

int temp = 0;

if(int.TryParse(PASIDValues[i].ToString(), out temp))
    PASIDintValues[i] = temp;

【讨论】:

  • +1 - 1:58 在我前面,额外的 'e' 并没有什么不同。 ;)
【解决方案2】:

请务必实例化您计划存储的转换结果值的完整长度,并使用临时变量从 int.TryParse 获取值。

int[] PASIDintValues = new int[PASIDValues.Count()];
for(int i = 0; i < PASIDValues.Count() - 1; i ++)
{
    int tmp = 0;
    if(int.TryParse(PASIDValues[i].ToString(), out tmp))
        results[i] = tmp;
}

【讨论】:

    【解决方案3】:

    您不能引用List 元素,但可以引用数组元素。只需将 PASIDintValues 设为数组而不是列表即可。

    【讨论】:

    • Int32.TryParse 的哪些重载将数组作为其out 参数?
    • @M.Babcock:您不会将数组传递给TryParse,而是传递对元素的引用:int.TryParse(PASIDValues[i].ToString(), out PASIDintValues[i]); 其中PASIDintValuesint[]
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-17
    • 1970-01-01
    • 2019-03-27
    相关资源
    最近更新 更多