2016-07-02 4 views
0

私は抽象クラスのシーンを拡張しています:なぜこれらの抽象関数をC#で実装する必要はありませんか?

class IntroScene : Scene 
{ 
    // 
} 

あなたが見ることができるように、それは何もしません。抽象クラスSceneは抽象関数を持っています:

public abstract void LoadContent(ContentManager content); 

しかし、私はそれらを実装すべきであると私は不平を言っていません。何故なの?これは私の慣れたものです。

.NET Framework 4.6.1を使用してVisual Studio 2015でこれを行います。最近まで私は.NET 4.0でしか働いていませんでした。これは新しいC#6.0の機能の変更ですか、何か不足していますか?

+2

「IntroScene」はあなたが言及している「シーン」から派生したものですか? 「Scene」の下にカーソルを移動し、「F12」を押します。 – dotctor

+1

'Scene'から派生するのではなく、フルタイプの修飾子を使用してみてください(名前空間 - ' YourNamespace.Scene'を含む)。正しい抽象クラスから派生した場合は、コンパイル時例外 – dotnetom

+1

実行可能なreproコードを取得します。それを行う過程で、これが真実である方法がないので、あなた自身が答えを見つけるでしょう。 – usr

答えて

0

もちろん、何か不足しています。
可能なシナリオ:class IntroScene : Scene

  1. Sceneそれがあることを意味したものではありません。ダブルチェックをして、別のクラスから派生していないことを確認してください。それをフルネームで指定すると、ここで助けになります。 ...

  2. SceneIntroSceneは異なるアセンブリにあるか、コンパイラまたはVisual StudioはSceneの変化を追跡するために失敗したか、あなたはSceneがそれかで実装されているファイルを保存するのを忘れ。 Scene抽象的な作成した後に更新されていない間違ったアセンブリを参照しています。参照を確認するか、プロジェクトを再度ビルドします。

  3. 私たちはソフトウェア開発者であることを忘れないでください。たぶん誰も遭遇していないバグや奇妙な問題かもしれませんし、誰もそれを再現する方法を知らず、それに直面する確率は非常に低いです。ビジュアルスタジオやコンピュータを再起動してみてください。多分あなたはあなたの部屋から出て、再び入る必要があります!

+0

私はお詫び申し上げます。私はSceneを右クリックして "Go to definition"を使って、開いていて見ていたものより新しいバージョンのSceneに行くことに気づいた。私は同じライブラリの複数のバージョンをダウンロードしていて、あるものから別のものにアップグレードしようとしていました。新しいバージョンは引き続き抽象クラスとしてSceneを持っていましたが、メンバーのどれも抽象クラスではありませんでした。 – RaisinBranCrunch

関連する問題