C#错误(无法将类型’string’隐式转换为’int’)

请帮忙! 我不知道如何解决这个问题。我坚持这个并且已经有一段时间了。 这段代码应该是什么样的,错误在第8-10行

int intAmountA = 0; int intAmountB = 0; int intAmountC = 0; decimal decPackageA = 0m; decimal decPackageB = 0m; decimal decPackageC = 0m; decimal decTotal = 0m; intAmountA = TxtAmountA.Text; intAmountB = TxtAmountB.Text; intAmountC = TxtAmountC.Text; decPackageA = intAmountA * 150; decPackageB = intAmountB * 120; decPackageC = intAmountC * 90; LblPackageA.Text = decPackageA.ToString("c"); LblPackageB.Text = decPackageB.ToString("c"); LblPackageC.Text = decPackageC.ToString("c"); decTotal = decPackageA + decPackageB + decPackageC; LblTotal.Text = decTotal.ToString("c"); 

TxtAmountA.Text是一个字符串。 您正在尝试将变量intAmountA设置为字符串值的整数,从而设置错误。 您需要从文本框中的字符串中解析整数。

 intAmountA = int.Parse(TxtAmountA.Text); 

但是,请注意,如果TxtAmountA.Text内容不能转换为整数,则会出现exception。 那是你可以使用条件int.TryParse(string value, out integer);

 intAmountA = TxtAmountA.Text; intAmountB = TxtAmountB.Text; intAmountC = TxtAmountC.Text; 

您正在将字符串类型值分配给int类型变量。

这会将字符串值转换为它们的int类型表示。 例如“1”=> 1

 intAmountA = int.Parse(TxtAmountA.Text); intAmountB = int.Parse(TxtAmountB.Text); intAmountC = int.Parse(TxtAmountC.Text); 

你想了解:

  • 铸件
  • 数据类型

两者都是基本任务,但对编程非常重要。

你有几种方法:

 intAmount = Convert.ToInt32(txtAmount.Text); intAmount = int.Parse(txtAmount.Text); 

最简单的cast方法是上述方法。 但是,当可能传递无效的用户信息时,将发生此问题。 例如,用户传递example会导致exception。

您需要清理数据。 所以你可以尝试以下方法:

 int amount; if(int.TryParse(txtAmount.Text, out amount)) { // Properly converted amount to an integer. } 

另一种方法可能是:

 int amount = txtAmount.Text.Where(d => char.IsDigit(d)); 

最安全和最常见的是int.TryParse 。 但这些都是您应该考虑的方法来正确处理数据。

希望这对你有所帮助。