为什么Bitmap.FromFile()返回Image类型的对象

Max*_*ich 2 .net c# system.drawing

这是一个非常简单的问题,一直困扰着我,因为几乎每次我编写代码时我都会被绊倒但是这一行.

Bitmap image = Bitmap.FromFile("c:\img.jpg");
Run Code Online (Sandbox Code Playgroud)

我总是直观地假设从FromFile 类中命名的静态方法返回的对象X是类型X.

我意识到,显然我可以回去,Bitmap如果我想要,我确定我错过了一些东西,但根据标题为什么会Bitmap.FromFile(Path)返回一个图像而不是一个Bitmap?这只是一个经过深思熟虑的设计还是在这个实例中返回父类有更基本的原因?

vcs*_*nes 5

FromFile是一个静态方法Image,它是基本类型Bitmap.即使您正在调用,也可以通过Bitmap访问静态方法Image.FromFile.我想Bitmap可以隐藏(或隐藏)Image上的FromFile,它自己返回一个Bitmap,但无论出于何种原因,它都没有这样做.

还有其他子类型Image,例如Metafile(扩展名为.wmf的图像).这里的目的是实现多态行为 - 您可以使用FromFile加载图像,而不关心使用什么底层实现来处理图像.