";无效的表达式项';sbyte'&”;

本文关键字:sbyte quot 无效 表达式 | 更新日期: 2023-09-27 18:22:20

我得到错误Invalid Expression Term 'sbyte'

我对代码很陌生,不完全确定自己做错了什么。在从String更改变量后,我得到了错误,因为数字要键入到行中,然后在代码中稍后使用。

为什么我会出错?


String Name = "";
String Team1 = "";
String Team2 = "";
String Team3 = "";
String Team4 = "";
sbyte Score1 = 0;
sbyte Score2 = 0;
sbyte Score3 = 0;
sbyte Score4 = 0;
String Winner1 = "";
String Winner2 = "";
Console.WriteLine("What's your name?");
Name = Console.ReadLine();
Console.WriteLine("Hello " + Name + ", enter the names of the 4 teams you want to see play below.");
Team1 = Console.ReadLine();
Team2 = Console.ReadLine();
Team3 = Console.ReadLine();
Team4 = Console.ReadLine();
Console.WriteLine("Ok, Here are todays matches");
Console.WriteLine("___________________________");
Console.WriteLine();
Console.WriteLine(Team1 + " vs " + Team2);
Console.WriteLine();
Console.WriteLine(Team3 + " vs " + Team4);
Console.WriteLine();
Console.WriteLine("___________________________");
Console.WriteLine();
Console.WriteLine("How many goals did " + Team1 + " Score?");
Score1 = sbyte (Console.ReadLine());
Console.WriteLine("How many goals did " + Team2 + " Score?");
Score2 = sbyte (Console.ReadLine());
Console.WriteLine("How many goals did " + Team3 + " Score?");
Score3 = sbyte (Console.ReadLine());
Console.WriteLine("How many goals did " + Team4 + " Score?");
Score4 = sbyte (Console.ReadLine());

";无效的表达式项';sbyte'&”;

问题就在这里:

Score1 = sbyte (Console.ReadLine());

Console.ReadLine()返回一个字符串。您需要将其转换为带符号的字节。您为此编写的代码不正确,因此无法编译。

您可以使用SByte.Parse或更强大的SByte.TryParse方法来实现这一点。您编写的代码看起来像是直接转换的尝试,应该正确地编写为

Score1 = (sbyte)Console.ReadLine();

不过,这将在运行时失败,因为不可能将字符串直接转换为数字类型。

您还应该仔细阅读命名约定。局部变量通常以小写字母开头,如下所示:

String name = "";
String team1 = "";
sbyte score1 = 0;

您似乎正在尝试使用强制转换将字符串转换为其sbyte表示形式。那行不通。(似乎您正在尝试C++语法来构造类型,但这也不起作用)。

相反,请查看Byte.Parse()(或等效的SByte):

http://msdn.microsoft.com/en-us/library/k0s9b1y3(v=vs.110).aspx

string s = Console.ReadLine();
sbyte b = SByte.Parse(s);
Console.WriteLine("sbyte '{0}'", b);

如果格式不正确,Parse将抛出异常,因此请使用try/catch块。否则,TryParse()不会抛出异常,您只需检查返回值即可。

更多样品在这里:

http://msdn.microsoft.com/en-us/library/xbtzcc4w(v=vs.110).aspx

您可以通过三种方式转换变量。

//Method 1
sbyte one = sbyte.Parse(Console.ReadLine());
//method two
sbyte two = null;
sbyte.TryParse(Console.ReadLine(),two);
//method three
sbyte three = Convert.ToSByte(Console.ReadLine());

三个中的任何一个都适合你。