- - PR -
interfaseを実装できない
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2004-03-31 10:07
msoです。
C#の勉強をしているのですが、良くわからない箇所があり 悩んでいたのですが結局わからないままなので誰か相談に乗ってください。
というようなソース(会社で使っているソースなので修正しています・・動かないかも?) を実行すると'ConnectTest'はインターフェースメンバ'ItestInterface.GetField()を実装しません。' というエラーが出力されます。 そこでヘルプで調べてみたところ コンパイラ エラー CS0535 というエラーであることはわかりました。 つまりはinterfaseで宣言しているGetField()をConnectTestの中で 未使用だとこのエラーが出ると認識しています(間違っているかなぁ?) ただ、ConnectTestで.GetField()を使っているはずなのですが なぜこのエラーが出力されるのでしょうか? 何か心当たりがありそうなことがあれば教えてください。 よろしくお願いします。 [追加] 転記ミス修正 [ メッセージ編集済み 編集者: mso 編集日時 2004-03-31 10:23 ] [ メッセージ編集済み 編集者: mso 編集日時 2004-03-31 10:27 ] | ||||
|
投稿日時: 2004-03-31 10:13
インタフェースの、定義と使用で名前が違うのですが、転記ミス?
> interface ISegmentInterface > public class ConnectTest : ItestInterface | ||||
|
投稿日時: 2004-03-31 10:19
ItestInterface(ISegmentInterfaceの間違い?)を実装しているのはConnectTestクラスです。
ですので、ConnectTestがItestInterfaceで宣言されている機能を提供しなければなりません。 ConnectTestの中でGetField()という名前のメソッドを呼ぶとか呼ばないとかではなく、ConnectTestのメンバとしてGetField()というメソッドを用意しなければならないということです。 | ||||
|
投稿日時: 2004-03-31 10:20
ISegmentInterface -> ItestInterface
SegmentMyPattern -> testMyPattern と間違えていたにせよ、class ConnectTest に GetField()の実装が無いからエラーになっているのでしょう。Interfaceの理解が間違っているのでは。。。 #かぶったw [ メッセージ編集済み 編集者: nodera 編集日時 2004-03-31 10:20 ] | ||||
|
投稿日時: 2004-03-31 10:29
インターフェイスの名前が違うのはおいといて… うーん、インターフェイスについてヘルプなり見たらサンプルないですかね? 「実装していません」とは、その通り「インターフェイスで定義しているメソッドを」クラスで実装していないという意味です。 「使用していない」ではありません。 今回の例では、インターフェイスを実装(C#とかでは継承って言う?)する必要があるのはSegmentMyPatternであり、ConnectTestではありません。 あるインターフェイスをクラスが実装する(継承する)ということは、そのインターフェイスが定義しているメソッドを実装する必要があるということです。 | ||||
|
投稿日時: 2004-03-31 10:51
みなさまありがとうございました。
Class ConnectTestにテスト用のメンバとしてGetField()を追加したところ 別のエラーがでてきました(涙) まだまだわかっていませんが、早く理解したいとおもいます。 ありがとうございました。 |
1