C# 将numericUpAndDown值转换为整数变量

C# 将numericUpAndDown值转换为整数变量,c#,C#,我在尝试将数字上下转换为整数时遇到了一个问题。这是我到目前为止的代码专用整数计数器=numericUpAndDown1.值 感谢您的帮助,谢谢 属于decimal类型,因此不能直接将其存储到INT中,需要显式转换 private int counter = (int)numericUpAndDown1.Value; 在不知道numericUpAndDown1.Value属性的类型的情况下,您可以使用int.Parse作为一个快速而肮脏的解决方案来实现这一点: private int count

我在尝试将数字上下转换为整数时遇到了一个问题。这是我到目前为止的代码<代码>专用整数计数器=numericUpAndDown1.值 感谢您的帮助,谢谢

属于
decimal
类型,因此不能直接将其存储到
INT
中,需要显式转换

private int counter = (int)numericUpAndDown1.Value;

在不知道numericUpAndDown1.Value属性的类型的情况下,您可以使用int.Parse作为一个快速而肮脏的解决方案来实现这一点:

private int counter = int.Parse(numericUpAndDown1.Value.ToString());
正如Rahul的回答中所建议的,您也可以在numericUpAndDown1.Value是另一种数值类型的情况下尝试直接强制转换。但是,当源值超出可接受的整数值范围(小于/大于2147483647)时,这可能导致运行时异常

由于这两种方法都可能引发异常,因此为了安全起见,可以使用int.TryParse方法:

private int counter = 0;
int.TryParse(numericUpAndDown1.Value.ToString(), out counter);
如果您可以发布更多代码来提供一些上下文,那么可能会有更好的建议

编辑:

下面的应用程序演示了从decimal直接转换为int在这种情况下会引发异常:

using System;

namespace DecimalToIntTest {
    class Program {
        static void Main(string[] args) {

            decimal x = 3000000000;
            int y = (int)x;

            Console.WriteLine(y);
            Console.Read();

        }
    }
}

“我有问题”不是问题描述。你必须说得更具体些。尽管你的“问题”很明显,但我不会给你答案,除非你在问题中写下问题的确切内容。在许多情况下,一旦你真正阅读了错误信息,你就可以自己解决问题,这比在问答网站上直接得到答案要有效得多。关键字private。您如何知道这一点的可能重复?@dperish,确切地知道什么?@dperish,在回答中检查MSDN文档链接,然后返回以获取详细信息argument@dperish虽然微软不是唯一一款游戏,但他们关于c#的信息总是更准确的,你知道,因为微软实际上设计和开发了c#。。。关于异常-我同意它可能不理想,但可以使用简单的try/catch块来处理。但是,当源值超出可接受的整数值范围时,这可能会导致运行时异常。。。不,它不会。。。相反,位将被截断(或)额外数据将被截断。请参阅MSDN。mscorlib.dll中发生了类型为“System.OverflowException”的未经处理的异常。其他信息:值对于Int32来说太大或太小。是的,当您使用extrim值
MaxValue
MinValue
时,这可能是我们当时一致同意的。
using System;

namespace DecimalToIntTest {
    class Program {
        static void Main(string[] args) {

            decimal x = 3000000000;
            int y = (int)x;

            Console.WriteLine(y);
            Console.Read();

        }
    }
}