C#变量中存储的值错误

C#变量中存储的值错误,c#,console,C#,Console,我对编程相当陌生,所以发发发慈悲吧;) 我正在尝试建立一个程序,可以在c#中求解方程和给出梯度等,这样我可以使它逐渐变得更复杂。问题是,当我试图开始构建输入时,它似乎有一个错误的值 控制台:“a”的给定值: 9产出:57 我的代码: using System; namespace ConsoleApp1 { class Program { static void Main(string[] args) { Console.

我对编程相当陌生,所以发发发慈悲吧;) 我正在尝试建立一个程序,可以在c#中求解方程和给出梯度等,这样我可以使它逐渐变得更复杂。问题是,当我试图开始构建输入时,它似乎有一个错误的值

控制台:“a”的给定值: 9产出:57

我的代码:

using System;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Input an linear Eqasion in the following Pattern -- a * x + b");
            Console.Write("Given value for \"a\":");
            decimal aValue;
            aValue = Console.Read();
            Console.Write(aValue);
        }
    }
}

Console.Read
返回在此场景中在命令行上输入的字符代码。
9
的ASCII字符代码是
57
。如果您需要数字输入,最好使用
控制台.ReadLine
十进制.Parse
(或者更好地使用
十进制.TryParse

还值得注意的是,
Console.Read
一次只返回一个字符,这意味着对于超过1位的任何输入,都需要进行特殊处理。我强烈建议使用
ReadLine
并解析字符串,而不是将字符代码转换为它们所代表的数字。

返回一个
int
,但不是以您认为的方式返回。它返回键入字符的数值,而不是碰巧是数字的字符的人类直观解释。例如,如果键入一个字母或任何其他非数字字符,它会返回什么。

字符
'9'
的数字(十进制)值是多少

听起来你想读的是台词,而不是人物。例如:

string aValue;
aValue = Console.ReadLine();
Console.Write(aValue);
string aValue;
aValue = Console.ReadLine();
if (decimal.TryParse(aValue, out decimal numericValue)
{
    Console.Write(numericValue);
}
else
{
    // The value could not be parsed as a decimal, handle this case as needed
}
请记住,您需要按return将行发送到应用程序

如果以后需要将值设置为数字,则仍然需要输入字符串,但需要对其进行解析。例如:

string aValue;
aValue = Console.ReadLine();
Console.Write(aValue);
string aValue;
aValue = Console.ReadLine();
if (decimal.TryParse(aValue, out decimal numericValue)
{
    Console.Write(numericValue);
}
else
{
    // The value could not be parsed as a decimal, handle this case as needed
}

你期望的产量是多少?嗯
Console.Read()
返回一个
int
,它是读取字符的ascii码。字符
'9'
具有ascii值
57
。它为您提供输入的ascii值。57是9的ASCII码。如果你输入0,你会得到48,它的ASCII值。好问题btw@Arun谢谢我已经讨厌语法了;)为什么需要先将aValue声明为字符串?@Vale:因为
Console.ReadLine()
返回一个
字符串。C#是静态类型的,如果您试图在错误类型的变量中存储值,则会看到编译器错误。
string aValue=Console.ReadLine()
会更好。@companydronefromssector7g:同意,我只是保持OP现有的编码风格一致。就我个人而言,我甚至只会使用
var
,因为对我来说
ReadLine
已经具有了作为字符串的清晰语义。下面是我学到的,你可以在函数调用中声明out变量。男孩我想念c#有时,VB就是不一样:(这肯定应该被标记为答案,10/10解释。