我有一个字符串数组,我想检查字符串是否为数字,然后将其作为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'命令,有什么问题,我该如何解决?
感谢。
答案 0 :(得分:5)
使用此代码
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;
}
答案 1 :(得分:3)
首先,您的目标数组必须是int[]
,而不是Object[]
:
int[] parametersArray = new int[parametersStringArray.Length];
您的TryParse
来电不正确。请尝试以下方法:
int.TryParse(parametersStringArray[i].ToString(), out parametersArray[i]);
答案 2 :(得分:1)
int res;
if (int.TryParse(parametersStringArray[i], out res)) {
parametersArray[i] = res;
}
else {
Console.WriteLine("Not a number at index {0}", i);
}
答案 3 :(得分:0)
看看这个:
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());