【问题标题】:How to convert a String[] to int[] in C# and .NET 2.0?如何在 C# 和 .NET 2.0 中将 String[] 转换为 int[]?
【发布时间】:2010-12-08 13:22:16
【问题描述】:

我有:

string[] strArray = new string[3] { "1", "2", "12" };

我想要这样的东西

int[] intArray = Convert.toIntArray(strArray);

我工作在 C# .net v2.0,我不想写很多代码。

我该怎么做?

谢谢。

【问题讨论】:

标签: c# .net-2.0


【解决方案1】:

您可以为此目的使用Array.ConvertAll 方法,该方法“将一种类型的数组转换为另一种类型的数组”。

int[] intArray = Array.ConvertAll(strArray,
                                  delegate(string s) { return int.Parse(s); });

(编辑:类型推断适用于这种技术。或者,您也可以使用隐式方法组转换,如 Marc Gravell 的回答,但您必须明确指定通用类型参数。)

使用for循环:

int[] intArray = new int[strArray.Length];

for (int i = 0; i < strArray.Length; i++)
   intArray[i] = int.Parse(strArray[i]);

为了完整起见,在 C# 4.0 中执行此操作的惯用方式如下:

var intArray = strArray.Select(int.Parse).ToArray();

或:

//EDIT: Probably faster since a fixed-size buffer is used
var intArray = Array.ConvertAll(strArray, int.Parse);

【讨论】:

    【解决方案2】:
    int[] intArray = Array.ConvertAll(strArray, int.Parse);
    

    或在 C# 2.0 中(泛型类型推断较弱):

    int[] intArray = Array.ConvertAll<string,int>(strArray, int.Parse);
    

    【讨论】:

      【解决方案3】:
      using System.Collections.Generic;
      
      int Convert(string s)
      {
          return Int32.Parse(s);
      }
      
      int[] result = Array.ConvertAll(input, new Converter<string, int>(Convert));
      

      或

      int[] result = Array.ConvertAll(input, delegate(string s) { return Int32.Parse(s); })
      

      【讨论】:

        【解决方案4】:

        Array.ConvertAll Generic Method

        将一种类型的数组转换为另一种类型的数组。

        【讨论】:

          【解决方案5】:

          当您确定所有项目都肯定是可解析的时,这样就可以解决问题:

          string[] strArray = new string[3] { "1", "2", "12" };
          int[] intArray = new int[strArray.Length];
          for (int i = 0; i < strArray.Length; i++)
          {
              intArray[i] = int.Parse(strArray[i]);
          }
          

          【讨论】:

            【解决方案6】:

            类似这样的东西,但你想保留一些错误检查(我的 if 真的很蹩脚,就像例子一样):

            static private int[] toIntArray(string[] strArray)
            {
                int[] intArray = new int[strArray.Length];
                for (int index = 0; index < strArray.Length; index++)
                {
                        intArray[index] = Int32.Parse(strArray[index]);
                }
                return intArray;
            }
            

            并像这样使用它:

            string[] strArray = new string[3] { "1", "2", "12" };
            int[] interi = toIntArray(strArray);
            

            【讨论】:

            • Int32.Parse 不能返回 null - 它返回一个 int。
            • Int32.Parse() 返回 Int32 即结构(值类型),因此 != null 总是通过。这行代码会生成一个关于我在说什么的警告。
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2011-03-31
            • 2010-10-31
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2010-11-04
            • 1970-01-01
            相关资源
            最近更新 更多