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

时间:2014-09-23 15:39:04

标签: c# .net system.drawing

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

Bitmap image = Bitmap.FromFile("c:\img.jpg");

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

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

1 个答案:

答案 0 :(得分:5)

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

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