如何将字符串数组转换为长数组?

时间:2016-06-12 14:44:55

标签: c# .net arrays

我现在处于半身像,我有这个字符串数组:

string[] StringNum = { "4699307989721714673", "4699307989231714673", "4623307989721714673", "4577930798721714673" };

我需要将它们转换为C#中的长数组数据类型:

long[] LongNum= { 4699307989721714673, 4699307989231714673, 4623307989721714673, 4577930798721714673 };

但我不知道怎么样,甚至可能?

5 个答案:

答案 0 :(得分:8)

您可以使用简单的Linq扩展功能。

long[] LongNum = StringNum.Select(long.Parse).ToArray();

或者您可以在每个字符串上使用long.TryParse

List<long> results = new List<long>();
foreach(string s in StringNum)
{
    long val;

    if(long.TryParse(s, out val))
    {
        results.Add(val);
    }
}

long[] LongNum = results.ToArray();

答案 1 :(得分:4)

var longArray = StringNum.Select(long.Parse).ToArray();

enter image description here

答案 2 :(得分:3)

可以使用Linq在更少的代码中完成,但这是传统的方法:循环每个字符串,将其转换为long:

var longs = new List<Long>();
foreach(var s in StringNum) {
    longs.Add(Long.Parse(s));
}

return longs.ToArray();

答案 3 :(得分:1)

如果您正在寻找具有最小内存使用量的最快方法,那么这里就是

string[] StringNum = { "4699307989721714673", "4699307989231714673", "4623307989721714673", "4577930798721714673" };
long[] longNum = new long[StringNum.Length];

for (int i = 0; i < StringNum.Length; i++)
    longNum[i] = long.Parse(StringNum[i]);

使用new List<long>()是不好的,因为每次需要扩展时,它都会重新分配大量内存。最好使用new List<long>(StringNum.Lenght)来分配足够的内存并防止多个内存重新分配。为列表分配足够的内存可以提高性能,但是由于需要long[] ToArray List<>switch (page) { case "page1": App.MasterDetailPage.Detail = new NavigationPage(new Page1); break; case "page2": App.MasterDetailPage.Detail = new NavigationPage(new Page2); break; default: App.MasterDetailPage.Detail = new NavigationPage(new DefaultPage); break; } 会再次调用整个内存重新分配以生成数组。另一方面,您知道输出的大小,您可以最初创建一个数组并进行内存分配。

答案 4 :(得分:0)

您可以遍历string数组,并使用 long.Parse()函数将字符串转换为数字。请考虑以下代码:

string[] StringNum =  
{ "4699307989721714673",  
  "4699307989231714673",  
  "4623307989721714673",  
  "4577930798721714673" };

long[] LongNum = new long[4];
for(int i=0; i<4; i++){
    LongNum[i] = long.Parse(StringNum[i]);
}

这会将每个string转换并存储为 LongNum 数组中的long值。