privateのDispose – プログラミング – Home

通知
すべてクリア

privateのDispose


gama
 gama
(@gama)
ゲスト
結合: 18年前
投稿: 9
Topic starter  

IDisposableインタフェースを実装したクラスのDisposeってprotectedだったり、
privateだったりしますよね。
これって直接だと呼べないけど、usingを使うと呼べるはず。と思って作ってみたら
publicではないと、コンパイルエラーになった。なにか勘違いしていますか。
環境はVisualStudio2005です。


引用解決済
トピックタグ
YuO
 YuO
(@YuO)
ゲスト
結合: 22年前
投稿: 320
 

コンパイルエラーが出たのであれば,そのメッセージをちゃんとCopy & Pasteしてくださ
い。

おそらく,
private void Dispose () { /* ... */ }
しか書かなかったのでしょう。

インターフェイスを継承した場合,
・対応するメンバはpuclibかつ非静的である
・明示的に実装されている
のどちらかを満たさなければなりません。

インターフェイスに定義されているメソッドをprotected/privateにする場合,
明示的に実装したものと,protected/privateなメソッドの2つを用意する必要がありま
す。
# 実際には明示的に実装された物は委譲するだけですが。


返信引用
gama
 gama
(@gama)
ゲスト
結合: 18年前
投稿: 9
Topic starter  

すいません。以下エラーです。
エラー 1 'ConsoleApplication1.Test' はインターフェイス メンバ
'System.IDisposable.Dispose() を実装しません。'ConsoleApplication1.Test.Dispose
()' が public ではなく、static になっているか、または戻り値の型が正しくありません。

以下がテストクラスです。
class Test : IDisposable
{
private void Dispose() { }
}

明示的な実装とは? 調べてみました。以下でできました。
void IDisposable.Dispose()
{
  this.Dispose();
}
明示的、実装知らなかったです。YuOさん、ありがとうございました!


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました