C# 无法从';双倍';至';System.ReadOnlySpan<;char>';尝试使用'TryParse'时出错`

C# 无法从';双倍';至';System.ReadOnlySpan<;char>';尝试使用'TryParse'时出错`,c#,C#,我目前正在学习C#,我遇到了麻烦。我得到无法从'double'转换为'System.ReadOnlySpan'错误,当我尝试使用时!double.TryParse staticdoubleuserdouble,correctDouble; 静态方法(){ Console.Write(一些双字符串); 而(!double.TryParse(userDouble,out )){ 试一试{ userDouble=Double.Parse(Console.ReadLine()); } 抓住{ Conso

我目前正在学习C#,我遇到了麻烦。我得到
无法从'double'转换为'System.ReadOnlySpan'
错误,当我尝试使用
时!double.TryParse

staticdoubleuserdouble,correctDouble;
静态方法(){
Console.Write(一些双字符串);
而(!double.TryParse(userDouble,out )){
试一试{
userDouble=Double.Parse(Console.ReadLine());
}
抓住{
Console.WriteLine($“{Convert.ToString(userDouble)}是无效的输入\n\n”);
}
}
//检查userDouble是否正确。
if(数学四舍五入(correctDouble,2)==userDouble){
Console.WriteLine(“您是正确的!\n”);
}
否则{
控制台。WriteLine(“你错了。”);
}
}
该怎么办:检查
userDouble
是否为有效的双精度字符,而不是字母/单词

我还尝试:

while(!double.TryParse(Console.ReadLine(),out userDouble)){
Console.WriteLine($“{Convert.ToString(userDouble)}是无效的输入\n\n”);
}
但是这给了我
方法'TryParse'不重载1个参数


任何帮助都将不胜感激

您需要首先在字符串变量中获取控制台值,然后使用
double.TryParse(…)
检查它。试试下面的方法

string s = Console.ReadLine();
while(!double.TryParse(s, out userDouble)) {
    Console.WriteLine($"{s} is an invalid input\n\n");
    s = Console.ReadLine();
}

您的以下尝试必须正常工作。但您将面临的唯一问题是,当
Console.ReadLine()
中的值不是
double
时,它将写入
0是无效的输入,因为
double.TryParse
将设置
userDouble=0

while(!double.TryParse(Console.ReadLine(), out userDouble)) {
    Console.WriteLine($"{Convert.ToString(userDouble)} is an invalid input\n\n");
}

如何声明变量
userDouble
?如果将
userDouble
声明为
double
userDouble
声明为
static double
,则第二次尝试应该有效。我的第二次尝试也给了我一个错误,方法“TryParse”取1个参数时没有重载。我被困在这里有一段时间了。为将来的读者更新了我的帖子。非常感谢。您的代码:
while(!double.TryParse(userDouble,out )){
。您的注释:“userDouble声明为静态double”-那么您希望
TryParse
如何处理
userDouble
?您的第二次尝试是正确的,没有给您那个错误消息。@John感谢您的澄清!我现在明白了。非常感谢您的回答。再次感谢您!感谢您的进一步澄清!我有一个问题。为什么要使用
string s=Console.ReadLine();
while(!double.TryParse(s,out userDouble)){…}
生成一个无限循环,显示
Conole.WriteLine(“无效输入”)
。但是
while(!double.TryParse(Console.ReadLine(),out userDouble)){…
不生成无限循环,但不显示
Console.WriteLine(“无效输入”)
当用户输入字符/字符串时?它将在用户输入字符/字符串前后第二次显示。我现在得到了它,我忘记在while循环中添加
s=Console.ReadLine();
。再次感谢您!添加
s=Console.ReadLine()
循环结束时执行。因此,对于下一次迭代,将在
条件中检查最新的值。