我正在嘗試爲Color
靜態類編寫一個簡單的擴展方法,它返回該顏色的黑白等價物。
問題是,擴展方法不能返回靜態類型...
那麼,我該怎麼做?!請幫幫我。如何創建具有靜態返回類型的擴展方法?
0
A
回答
8
問題是,NO方法可以返回一個靜態類型。靜態類是無狀態的(或者只有靜態狀態),因此只有一個「實例」可以從引用該名稱空間的任何代碼全局訪問。
您可以返回一個Color; Color類本身(儘管它具有靜態成員)不是靜態的,並且可以存在很多顏色實例。您也可以將擴展方法應用於Color。如果你這樣做,那麼你就可以在非靜態的色彩結構的靜態成員之一調用擴展方法:
public static class MyColorsExtensions
{
public static Color ToGreyScale(this Color theColor) { ... }
}
...
var greyFromBlue = Color.Blue.ToGreyScale();
4
如果你指的是System.Drawing.Color
- 它不是一個靜態類......它是一個結構。你應該能夠從一個方法返回它的一個實例。它恰巧發生在Color
結構包含代表specific colors
的靜態成員 - 如:Color.Black
和Color.White
。
如果您不是指那種類型,那麼請發佈一個失敗代碼的簡短示例。
+0
只是要清楚,Color也可以用於任意ARGB值。 – Nathan 2010-09-20 22:33:01
0
很難明白你想說什麼,但如果你想爲靜態類創建擴展方法,這是不可能的,因爲擴展方法是針對類實例的。
0
這是你在找什麼?這是一個返回靜態顏色結構的擴展方法。
public static class ColorExtensions
{
private static Color MYCOLOR = Color.Black;
public static Color BlackAndWhiteEquivalent(this Color obj)
{
// stubbed in - replace with logic for find actual
// equivalent color given what obj is
return MYCOLOR;
}
}
和測試
[Test]
public void FindBlackAndWhiteColorEquivalent()
{
Color equivalentColor = Color.Black.BlackAndWhiteEquivalent();
}
-2
試試這個
public static class Colores
{
public static Color Rojo = Color.FromArgb(0xE51600);
public static Color Azul = Color.FromArgb(0x004183);
public static Color Verde = Color.FromArgb(0x00865A);
public static Color Plata = Color.FromArgb(0xC4C5C7);
public static Color Gris = Color.FromArgb(0x58585A);
public static Color Cafe = Color.FromArgb(0x632600);
public static Color Negro = Color.Black;
}
相關問題
- 1. 擴展方法vs靜態工具類
- 2. 擴展方法擴展靜態類
- 3. 如何爲動態類型創建MVC擴展方法
- 4. 擴展方法,返回接口類型
- 5. 爲什麼我無法爲靜態類創建擴展方法?
- 6. 擴展一個具有靜態方法的類
- 7. 如何從靜態方法返回值創建C#類實例?
- 8. 在非靜態泛型類中沒有擴展方法?
- 9. 擴展/重寫Eloquent創建方法 - 不能使靜態方法非靜態
- 10. 靜態類方法沒有返回值
- 11. 靜態方法與類擴展android.app.Application?
- 12. 靜態構造函數不能有返回類型,但靜態方法必須在C#中有返回類型
- 13. 類返回類型創建方法
- 14. 擴展返回父類型
- 15. Java泛型擴展返回類型的方法
- 16. 如何爲Enum類型參數創建擴展方法?
- 17. 如何爲類型創建擴展方法
- 18. 具有通用返回類型的Molling靜態方法<T>
- 19. 具有靜態方法的靜態類和具有靜態方法的常規類之間有什麼不同?
- 20. 靜態方法返回類的shared_ptr
- 21. 靜態顏色類型初始化擴展方法
- 22. 擴展方法必須在非泛型靜態類
- 23. 擴展方法必須在非泛型靜態類
- 24. 擴展方法必須在非泛型靜態類中定義
- 25. 如何從具有泛型返回類型的方法返回基元?
- 26. 擴展方法的靜態類的方法
- 27. 靜態返回類型宏
- 28. 是否可以創建靜態擴展方法
- 29. 如果返回類型是靜態也該方法是靜態的
- 30. 創建擴展類型
所以,你想一個方法'顏色ToBlackOrWhite(這Colour彩色)''那裏是Color'一個靜態類?這是行不通的。不僅不能將靜態類作爲返回類型,而且也不能作爲參數類型。因爲它沒有任何意義:如果您無法創建「Color」實例,如何將顏色傳遞給方法? – dtb 2010-09-20 22:23:51