首页 > 解决方案 > 为什么 C# 使用 double 类型而不是 int 类型的函数?

问题描述

问题是,当我运行此代码时:

    class Animal
    {
        public void WriteMessage(int i)
        {
            Console.WriteLine("Message from Animal");
        }
    }

    class Bull : Animal
    {
        public void WriteMessage(double p)
        {
            Console.WriteLine("Message from Bull");
        }
    }

    static void Main(string[] args)
    {
        int i = 5;
        Bull b = new Bull();
        b.WriteMessage(i);
        Console.ReadLine();
    }
    

然后我得到输出:( Message from Bull为什么?)

但是,当我在这样的函数中交换参数时:

    class Animal
    {
        public void WriteMessage(double i)
        {
            Console.WriteLine("Message from Animal");
        }
    }

    class Bull : Animal
    {
        public void WriteMessage(int p)
        {
            Console.WriteLine("Message from Bull");
        }
    }

并将传递的类型更改为双精度:

static void Main(string[] args)
{
    double i = 5;
    Bull b = new Bull();
    b.WriteMessage(i);
    Console.ReadLine();
}

然后输出是: Message from Animal

Visual Studio 显示,此函数有两个重载,一个是 int,第二个是 double。仍然当代码运行时,在这两种情况下,具有双类型参数的函数都在运行。

我很高兴知道它为什么会这样工作。谢谢。

标签: c#functionintegerdouble

解决方案


推荐阅读