Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 解释这种类型的演员?_C#_Casting - Fatal编程技术网

C# 解释这种类型的演员?

C# 解释这种类型的演员?,c#,casting,C#,Casting,我正在学习铸造和转换技术,我认为我已经掌握了窍门,直到我遇到这个。 我知道这是一种将整数除以小数的方法,但有人能用简单的术语来解释它的工作原理吗?我似乎无法理解这种类型的演员。多谢各位 int value1 = 12; decimal value2 = 6.2m; float value3 = 4.3f; int result1 = (int)((decimal) value1 / value2); 输出: Result1 = 1 让我们从一些重要的事情开始。将值1转换为十进制已过时,您

我正在学习铸造和转换技术,我认为我已经掌握了窍门,直到我遇到这个。 我知道这是一种将整数除以小数的方法,但有人能用简单的术语来解释它的工作原理吗?我似乎无法理解这种类型的演员。多谢各位

int value1 = 12;
decimal value2 = 6.2m;
float value3 = 4.3f;

int result1 = (int)((decimal) value1 / value2);
输出:

Result1 = 1 

让我们从一些重要的事情开始。将值1转换为十进制已过时,您可以从以下方面获得相同的精确结果:

int result1 = (int)(value1 / value2);
通过执行以下操作,可以看到不强制转换为int的结果:

var result1 = (value1 / value2);
Console.WriteLine(result1.GetType());
结果:System.Decimal

如果您尝试将其直接分配给int,则会得到

无法将类型“decimal”隐式转换为“int”。存在显式转换。是否缺少强制转换


因此,您需要显式地将十进制转换为int,以将其分配给result1。让我们从一些重要的内容开始。将值1转换为十进制已过时,您可以从以下方面获得相同的精确结果:

int result1 = (int)(value1 / value2);
通过执行以下操作,可以看到不强制转换为int的结果:

var result1 = (value1 / value2);
Console.WriteLine(result1.GetType());
结果:System.Decimal

如果您尝试将其直接分配给int,则会得到

无法将类型“decimal”隐式转换为“int”。存在显式转换。是否缺少强制转换


因此,您需要显式地将十进制转换为int以将其分配给result1

十进制转换是多余的,因为value2是一个decimal-ready,它将value1转换为decimal,将value1/value2的结果转换为int。您能详细说明您的具体位置吗?@BiesiGrr但value1不是。@JohnathanBarclay:value1将自动转换为decimal由于value2是十进制的-因此显式转换为十进制redundant@JohnathanBarclayint/decimal类型为decimal由于value2是一个decimal,所以decimal强制转换是多余的。它将value1强制转换为decimal,将value1/value2的结果强制转换为int。您能详细说明您的具体位置吗?@BiesiGrr,但value1不是。@JohnathanBarclay:由于value2是十进制的,value1将自动转换为十进制-因此显式转换为十进制redundant@JohnathanBarclayint/decimal类型是decimal即使没有十进制转换,也会得到相同的结果,原因是编译器会自动为您执行此操作。请参阅@BiesiGrr compiler自动为您执行此操作,是的,但我们应该如何处理此操作。这是Microsoft针对IMO挑战提供的解决方案。我认为没有必要使用十进制转换,但只是想澄清一下。即使没有十进制转换,您也会得到相同的结果,因为编译器会自动为您执行此操作。请参阅@BiesiGrr compiler自动为您执行此操作,是的,但我们应该如何处理此操作。这是Microsoft为挑战IMO提供的解决方案。我认为没有必要使用十进制转换,但只是想澄清一下。