通过 float 或decimal 调用参数为 double 的重载函数

Waq*_*qas 2 .net double overloading decimal

在.net中,我为“Add”创建了三个重载函数,参数为float、double和decimal。为什么它总是调用 double 而不是其他的?我只是想理解优先的原因。

 public Form1()
 {
     var g = Add(4.5, 5.6);
 }

 public object Add(float a, float b)
 {
         return a + b;
 }

 public object Add(double a, double b)
 {
        return a + b;
 }

 public object Add(decimal a, decimal b)
 {
     return a + b;
 }
Run Code Online (Sandbox Code Playgroud)

Sae*_*ini 5

因为4.55.6double文字,所以该调用绑定到具有双参数的重载。

要使用浮点参数调用重载:

var g = Add(4.5f, 5.6f);
Run Code Online (Sandbox Code Playgroud)

要使用十进制参数调用重载:

var g = Add(4.5m, 5.6m);
Run Code Online (Sandbox Code Playgroud)