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

3

请帮忙!我不知道该如何修复这个问题。我被卡在这里已经有一段时间了。至少代码应该长什么样,错误在第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");
3个回答

16

TxtAmountA.Text是一个字符串。您试图将整数变量intAmountA设置为字符串值,因此出现了错误。您需要从文本框中解析出字符串的整数。

intAmountA = int.Parse(TxtAmountA.Text);

请注意,如果TxtAmountA.Text中的内容无法转换为整数,您将会收到一个异常。这时,您可以使用条件语句 int.TryParse(string value, out integer);

Translated:

However, be aware that if what is in TxtAmountA.Text is not something that can be cast to an integer, you will get an exception. That is when you can use the conditional int.TryParse(string value, out integer);


6

您需要学习以下内容:

这两个任务都是基础任务,但对编程非常重要。

您有几种方法:

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

最简单的转换cast的方法如上所述。但是,当传递无效的用户信息时会出现问题。例如,用户传递example将引发异常。
您需要对数据进行净化处理。因此,您可以尝试以下内容:
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。但这些都是你应该研究的方法,以正确处理数据。
希望这能帮到你。

2
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);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接