我在尝试将numericUpAndDown转换为int时遇到问题。这是我到目前为止的代码。 private int counter = numericUpAndDown1.Value;
感谢所有帮助,谢谢!
答案 0 :(得分:1)
numericUpAndDown1.Value
属于decimal
类型,因此您无法直接将其存储到INT
并需要显式投射
private int counter = (int)numericUpAndDown1.Value;
答案 1 :(得分:0)
在不知道numericUpAndDown1.Value属性的类型的情况下,您可以使用int.Parse快速完成此操作。肮脏的解决方案:
private int counter = int.Parse(numericUpAndDown1.Value.ToString());
正如Rahul的回答所建议的那样,在numericUpAndDown1.Value是另一种数字类型的情况下,你也可以尝试直接强制转换。但是,当源值超出可接受的整数值范围(小于/大于2,147,483,647)时,这可能会导致运行时异常。
private int counter = (int)numericUpAndDown1.Value;
由于这两个都可以抛出异常,因此可以使用int.TryParse方法来保证安全:
private int counter = 0;
int.TryParse(numericUpAndDown1.Value.ToString(), out counter);
如果你可以发布更多代码来提供一些上下文,那么可能会有更好的建议。
修改强>
以下应用程序演示了从十进制到int的直接转换将在这种情况下抛出异常:
using System;
namespace DecimalToIntTest {
class Program {
static void Main(string[] args) {
decimal x = 3000000000;
int y = (int)x;
Console.WriteLine(y);
Console.Read();
}
}
}