【问题标题】:int.TryParse out into an object arrayint.TryParse 出入一个对象数组
【发布时间】:2013-09-09 22:38:15
【问题描述】:

我有一个字符串数组,我想检查一个字符串是不是一个数字,然后把它作为一个int放入一个对象数组中。

(对于那些问为什么是对象数组的人,因为我也想检查字符和其他东西)

我有这个:

Console.WriteLine("Enter parameters for the function with a space in between each parameter: "); String stringParameters = Console.ReadLine();
String[] parametersStringArray = stringParameters.Split(' ');
Object[] parametersArray = new Object[parametersStringArray.Length];

for (int i = 0; i < parametersStringArray.Length; i++)
{
    int.TryParse(parametersStringArray[i], out int.Parse(parametersArray[i]));
}

它无法编译,我不熟悉“out”命令,出了什么问题以及如何解决?

谢谢。

【问题讨论】:

  • 为什么要把它放到object数组中...?因为你只是把int 值放在那里......
  • parametersArray 应该是 int 数组
  • 为什么是对象数组? (你可能只需要out parametersArray[1]
  • 没有编译器错误的声明 "It doesn't compile" 毫无价值。 确切的编译器错误是什么?
  • 你应该阅读这个问题和我的回答首先明白为什么在传递outref时必须给出一个变量作为参数,其次,为什么该变量必须完全匹配参数类型。 stackoverflow.com/questions/1207144/…

标签: c# arrays


【解决方案1】:

使用此代码

     Console.WriteLine("Enter parameters for the function with a space in between each parameter: "); String stringParameters = Console.ReadLine();
     String[] parametersStringArray = stringParameters.Split(' ');
     Object[] parametersArray = new Object[parametersStringArray.Length];

     for (int i = 0; i < parametersStringArray.Length; i++)
     {
        int tmp;
        if (int.TryParse(parametersStringArray[i], out tmp))
           parametersArray[i] = tmp;

     }

【讨论】:

  • 这样一个很好的拳击例子。
【解决方案2】:

首先,您的目标数组必须是int[],而不是Object[]

int[] parametersArray = new int[parametersStringArray.Length];

您的TryParse 呼叫不正确。请尝试以下操作:

int.TryParse(parametersStringArray[i].ToString(), out parametersArray[i]);

【讨论】:

    【解决方案3】:
    int res;
    if (int.TryParse(parametersStringArray[i], out res)) {
        parametersArray[i] = res;
    }
    else {
    Console.WriteLine("Not a number at index {0}", i);
    }
    

    【讨论】:

      【解决方案4】:

      看看这个:

      public static int? TryParse(string s)
      {
          int result;
          if (int.TryParse(s, out result))
          {
              return result;
          }
          return null;
      }
      
      var res = new string[] { "1", "2", "a" }
          .Select(x => TryParse(x).GetValueOrDefault());
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-02-08
        • 2018-01-20
        • 1970-01-01
        • 2020-12-19
        • 1970-01-01
        • 1970-01-01
        • 2018-07-27
        • 2021-05-05
        相关资源
        最近更新 更多