[ad_1]
廃棄と処分の違いは何ですか?
クラスオブジェクト x を構築しました。これには void Dispose とイベント Dispose があります。
そこで、クラス用に destroy を作成し、x で Dispose を呼び出しました。
しかし、クラスに Disused を作成して x.Disused を呼び出すにはどうすればよいですか
助けていただきありがとうございます。
解決策 1
Dispose はメソッドですが、Disused はイベントです。 Dispose メソッドが呼び出されて完了すると、Dispeded イベントが発生します。
メソッドを呼び出すことはできますが、イベントを処理する必要があります。
例:
obj.Dispose();
obj.Disposed += new EventHandler(OnDisposed); private void OnDisposed(object sender, EventArgs e) { // Do your stuffs }
役に立った場合は回答としてマークしてください
解決策 2
初めに、 Dispose
は IDisposable.Dispose()
コンストラクトを使用するため、基本的に C# に埋め込まれています。
class MyDisposableClass: IDisposable { void IDisposable.Dispose() {/* should be implemented */} //... } using (disposableObject obj = new MyDisposableClass()) { //use disposableObject... } //disposableObject.Dispose automatically called
の Dispose
は例外でも呼び出されます (これは try- の場合と厳密に同等の糖衣構文です)finally
ブロック)。
に関しては Disposed
— さまざまなものがこの名前を持っています (ブール型プロパティとイベントを見ました)。 おそらく、注目のメンバーはそのイベントです System.ComponentModel.IComponent.Disposed
。 System.ComponentModel.Component の実装 IDisposable.Dispose
と IComponent
Dispose が呼び出されたときのイベントの様子。
Disused を直接呼び出すことはできません (または、実装すれば呼び出すことができます) System.ComponentModel.IComponent.Disposed
直接、ただし継承することで Component
)。
1 つ以上のイベント ハンドラーを追加できます。 Disposed
イベント。
ただし、他のサンプルに示されている構文は廃止されました。
匿名を使用する方がはるかに優れています。
myClass.Disposed += (sender, eventArgs) => { //whatever you want here };
このハンドラー内から 1 つ以上のメソッドを呼び出す場合、まったく同じパラメーター リストを渡す必要がないため、この方が優れています。 (object sender, System.EventArgs eventArgs)
— 多くの場合、1 つまたは両方の引数が必要になるため、コードが簡素化されます。 このブロック内にハンドラー全体を記述することもできます。 また、型推論を使用するため、型を入力する必要はありません。
.NET 2.0 では古い構文を使用できます。型推論はありませんが、匿名のままです。
myClass.Disposed += delegate( object sender, System.EventArgs eventArgs) { //whatever you want here }
少なくとも、正確なパラメータリストを持つハンドラを使用する必要はありません。
解決策 3
その違いに困っています。 どなたか賢い方、この 2 つの言葉の違いを実際に説明していただけませんか。
[ad_2]
コメント