即使结果应为十进制,var也会转换为int

Tuo*_*asK 0 c#

我知道这是一个非常基本的问题,但请解释为什么会这样.

var number = 7 / 2; // number is 3
decimal number = 7 /2; // still number is 3
Run Code Online (Sandbox Code Playgroud)

为什么数字不是3.5?为什么它总是被转换为int?因为数字都是int?将其中一个数字转换为十进制时,此方法有效.

Ren*_*ogt 7

文字 72两者都是由编译器所解释int.因此,除法是整数除法, 从而产生一个int有价值的值3.

使用var关键字,编译器从表达式中推断出正确的类型,从而导致number第一行是类型int.

在第二行中,您显式声明number为十进制,因此int返回的7 / 2值将转换为decimal.


如果你想要结果decimal,你应该使用正确的文字结尾m:

var number = 7/2m;
Run Code Online (Sandbox Code Playgroud)