[英]Making virtual base class members static in derived classes
我正在用 MonoGame 編寫一個游戲,並且有一個entity
類,幾乎每個游戲對象都使用它。 雖然實體類沒有自己定義的紋理,但在該類中聲明texture
成員將大大簡化代碼,因為無需在每個子類中使用完全相同的代碼覆蓋某些虛擬函數。
例如,我目前必須把它放在我的Entity
類中:
public virtual void Draw() { }
然后在每個派生類中添加它:
public static Texture2D texture;
...
public override void Draw()
{
if (active)
Game1._spriteBatch.Draw(texture, position, Color.White);
}
我嘗試了各種各樣的東西,比如new static
,但它們沒有用。 有人可以提供幫助,還是在 C# 中根本不可能? 我知道我可以編寫一個虛擬訪問器函數並覆蓋它,但我寧願不必在每個子類中都編寫它。
在派生類中使虛擬基類成員靜態化
不可能,期間。 成員名稱是唯一的,您不能根據 C# 規范將成員名稱重新定義為靜態。 您可以創建一個靜態的 ANOTHER 成員,並使用原始成員的最終覆蓋來訪問這個成員,但這會保留這個成員。
C# 根本不支持像這樣的重新定義。
我可以編寫一個虛擬訪問器函數並覆蓋它,但我寧願不必在每個子類中都編寫它。
然后做一個新的靜態一個和一個基本上使用靜態一個的最終覆蓋。 完畢。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.