我是编程新手,我试图使用一个for循环在四个数组中插入值。但是,我仅收到错误消息:(参数2可能无法与'out'关键字一起传递。我知道控制台readline周围存在问题,但我无能为力,可以解决这种情况。到目前为止,这是我的代码:
int size;
do
{
Console.Clear();
Console.Write("What is the size of the array: ");
} while (!int.TryParse(Console.ReadLine(), out size));
string[] name = new string [size];
double[] grade1 = new double [size];
double[] grade2 = new double[size];
double[] avarage = new double [size];
for (int i = 0; i < size; i++)
{
do
{
Console.Write($"Insert the name of student number: {i + 1}: ");
} while (!Convert.ToString(Console.ReadLine(), out name[i]));
do
{
Console.Write($"Insert {i + 1}º grade: ");
} while (!Convert.ToDouble(Console.ReadLine(), out grade1[i]));
}
答案 0 :(得分:1)
虽然int.TryParse
返回bool
,而Convert.ToString
和Convert.ToDouble
却没有,并且与其他语言不同,C#不允许您将其他类型视为{{1} }简化为bool
比较。因此,当null
不是!value
时,通常不能使用value
。
请注意,在第二次转换的情况下,您是将字符串(控制台输入)转换为字符串,因此 不是必需的-只需获取字符串并检查{{3} }(尽管您需要多行)。因此
bool
对于第三次转换,您可以改用IsNullOrWhitespace
,
do
{
Console.Write($"Insert the name of student number: {i + 1}: ");
name[i] = Console.ReadLine();
} while (string.IsNullOrWhitespace(name[i]));
值得注意的是,.NET中的大多数数字类型都支持} while(!double.TryParse(Console.ReadLine(), out grade1[i]));
方法,将字符串转换为仅使代码看起来相同的字符串是YAGNI原理的一个很好的例子。