我现在处于半身像,我有这个字符串数组:
string[] StringNum = { "4699307989721714673", "4699307989231714673", "4623307989721714673", "4577930798721714673" };
我需要将它们转换为C#中的长数组数据类型:
long[] LongNum= { 4699307989721714673, 4699307989231714673, 4623307989721714673, 4577930798721714673 };
但我不知道怎么样,甚至可能?
答案 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)
答案 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
值。