2014-09-23 70 views
2

這是一個非常簡單的問題,一直困擾着我,因爲幾乎每次我寫代碼的時候,我都會絆倒這條線。爲什麼Bitmap.FromFile()返回一個Image類型的對象

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

我總是憑直覺認爲一個對象在X類名爲FromFile的靜態方法返回將X型。

我意識到,如果我願意,我可以投回Bitmap,我確信我錯過了一些東西,但根據標題,爲什麼Bitmap.FromFile(Path)會返回圖像而不是Bitmap?這只是一個設計得不好的設計,還是在這種情況下返回父類的更根本原因?

+0

那麼,你應該被它絆倒。編譯錯誤希望提醒您使用位圖構造函數。 – 2014-09-23 17:29:58

回答

5

FromFileImage的靜態方法,它是Bitmap的基本類型。即使您確實調用了Image.FromFile,也可以通過Bitmap訪問靜態方法。我認爲Bitmap可以隱藏(或遮蔽)Image上的FromFile,它自己返回一個Bitmap,但無論出於何種原因,它都沒有這樣做。

Image還有其他兒童類型,如Metafile(帶有.wmf擴展名的圖像)。這裏的目的是爲了實現多態行爲 - 您可以使用FromFile加載圖像,而不在乎底層實現用於處理圖像。

+0

當然,完全錯過了它對父母來說是一個靜態的。非常感謝您的答案! – 2014-09-24 14:58:35

相關問題