这是一个非常简单的问题,一直困扰着我,因为几乎每次我编写代码时,除了这一行,我都会被绊倒。
Bitmap image = Bitmap.FromFile("c:img.jpg");
我总是直观地假设从类 X
中名为 FromFile
的静态方法返回的对象属于 X
类型。
我意识到显然,如果我愿意,我可以投射回Bitmap
,而且我确定我错过了一些东西,但根据标题,为什么Bitmap.FromFile(Path)
返回图像而不是Bitmap
?这只是一个考虑不周的设计,还是在这种情况下返回父类有更根本的原因?
FromFile
是Image
上的一个静态方法,它是Bitmap
的基本类型。您可以通过 Bitmap 访问静态方法,即使您确实在调用 Image.FromFile
。我想位图可以用自己的返回位图来隐藏(或阴影(图像上的 FromFile,但无论出于何种原因,它都不是那样做的。
还有其他子类型的Image
,例如Metafile
(扩展名为.wmf的图像(。这里的目的是实现多态行为 - 您可以使用 FromFile 加载图像,而不关心使用什么基础实现来处理图像。