問題タブ [sealed]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
oop - 最終および封印の目的
クラスを最終的または封印されたものとしてマークしたいのはなぜですか?
visual-studio-2008 - 封印されたクラスとオブジェクトブラウザ
オブジェクトブラウザウィンドウで.netオブジェクトモデルを調べているときに、封印されたクラスに関する情報が不足していることに気付きました。
たとえば、mscorlibコンテナ->システム名前空間->文字列クラスに移動すると、詳細ペインに次のように表示されます。
パブリッククラス文字列システム
のメンバー概要:
テキストを一連のUnicode文字として表します。属性:
[System.Runtime.InteropServices.ComVisibleAttribute(true)、System.Reflection.DefaultMemberAttribute( "Chars")]
クラスがコード定義ウィンドウを介して、またはもちろん、それから派生しようとすることによって封印されているかどうかを確認することしかできないようです。
それでも、Apress - Pro C# 2008 and the .Net 3.5 PlatformAndrew Troelsenによるフォロー中に、著者は188ページでオブジェクトブラウザがどのように封印されたステータスを表示するかを示しています。
この情報はVisualStudio2008オブジェクトブラウザーから削除されましたか?どういうわけかそれを取り戻すことができますか?
作成者はテキスト全体でVisualStudio2008について言及していますが、そのスクリーンショットは以前のバージョンのものである必要があります。この本は実際には第4版であり、2001年に.Net 1.0Beta2で始まりました。
c# - IEquatableである必要があります、IComparable封印されていないクラスに実装されますか?
誰かがそれを要求するかどうか、または一般的に要求すべきかどうかについて意見がありますかIEquatable<T>(それが)?IComparable<T>Tsealedclass
この質問は、不変クラスの実装を支援することを目的とした一連の基本クラスを作成しているときに発生しました。基本クラスが提供することを目的とした機能の一部は、同等性比較の自動実装です(同等性比較を制御するためにフィールドに適用できる属性とともにクラスのフィールドを使用します)。終了したらかなりいいはずです。式ツリーを使用して、それぞれのコンパイル済み比較関数を動的に作成しているTので、比較関数は通常の等式比較関数のパフォーマンスに非常に近いはずです。(キー入力された不変の辞書System.Typeとダブルチェックロックを使用して、生成された比較関数を適度にパフォーマンスの高い方法で保存しています)
ただし、発生したことの1つは、メンバーフィールドの同等性をチェックするために使用する関数です。私の最初の意図は、各メンバーフィールドのタイプ(これを呼び出しますX)が実装されているかどうかを確認することでしたIEquatable<X>。Xしかし、少し考えてみると、そうでない限り、これは安全に使用できるとは思いませんsealed。その理由は、そうXでない場合、の仮想メソッドに等価性チェックを適切に委任sealedしているかどうかがわかりません。これにより、サブタイプが等価性の比較をオーバーライドできるようになります。XX
次に、これにより、より一般的な質問が発生します。型が封印されていない場合、これらのインターフェイスを実際に実装する必要がありますか?Xインターフェイスコントラクトは2つのタイプを比較することであり、そうでない場合もある2つのタイプを比較することではないと主張するので、私はそうは思わないでしょうX(もちろん、Xまたはサブタイプである必要があります)。
皆さんはどう思いますか?封印されていないクラスでは避けるべきIEquatable<T>であり、避けるべきですか?IComparable<T>(また、これにfxcopルールがあるかどうか疑問に思います)
私の現在の考えは、生成された比較関数をであるメンバーフィールドでのみ使用しIEquatable<T>、代わりに、フィールドがのサブタイプを格納する可能性があり、のほとんどの実装が継承用に適切に設計されているとは思えないため、実装されている場合でも、仮想ifが封印されていない場合に使用することです。 。TsealedObject.Equals(Object obj)TTIEquatable<T>TIEquatable<T>
c# - c# seal と Java の final キーワードの間に機能上の違いはありますか?
重複の可能性:
C# での Java の final に相当するものは何ですか?
Java では、 final は単なるクラス以上のものに適用されます。
それで、私は疑問に思います: 2 つのキーワードの間に機能上の違いはありますか?
ありがとうございます。比較的初歩的な質問で申し訳ありません。
簡単な Google 検索では、私のニーズは満たされませんでした。
c# - 封印されたクラスの「ToString」を変更する
一緒に作業しているクラスがあります。
それToStringは弱いです(ちょうど示していますMicrosoft.TeamFoundation.WorkItemTracking.Client.WorkItemType)。
これをオーバーライドして名前を表示する方法はありますWorkItemTypeか?
通常は、新しいクラスの値を集計するだけですが、これをWPFのバインディングに使用しています(コンボボックスにWorkItemTypesのリストを作成し、選択した値をバインドされたWorkItemType変数に割り当てたい)。
ここは運が悪いと思いますが、お願いしたいと思いました。
c# - 基本クラスとして使用すべきではないことがわかっているすべてのクラスを封印する必要がありますか?
具体的なパフォーマンスやセキュリティ上の懸念がない場合でも、基本クラスとして使用すべきではないことがわかっているすべてのクラスを封印する必要がありますか?
wpf - BitmapImageが封印されたクラスであるのはなぜですか?
封印されていることに気付いたとき、BitmapImageクラスから継承しようとしていました。ざっと見てみましたが、封印されている理由がわかりません。
誰もがこれがなぜであるか知っていますか?
ありがとう
c++-cli - C++ 仮想 (封印) 関数
C++ プロジェクトで dll のクラスを使用しています。までは、すべて正常に動作しています...
特定のメソッド (オブジェクト ブラウザーにリストされている) を呼び出そうとすると、このメソッドが名前空間のメンバーではないというエラーが表示されます。
調べてみると、このメソッドは「virtual void x() シール済み」としてリストされていることに気付きました。
そのような関数を呼び出す方法はありますか?
.net - プライベート クラスはコンパイル時に封印されますか?
クラス A 内にネストされたプライベート クラスであるクラス B があるとします。クラス B から継承するクラスはありません。問題は、コンパイラがクラス B を自動的に Sealed としてマークするかどうかです。(VB では継承不可)。コンパイラがクラス B をシール済みとしてマークしない正当な理由はありますか?
私の考えは次のとおりです。クラス B はクラス A 内にネストされてプライベートであり、クラス B から継承するクラスは他にないため、クラス A の外で継承することはできないため、クラスを封印しても安全です (そうではありません)。 A のサブクラスによってさえ)。
.net - AutoMapperを使用してメソッドをラップすることは可能ですか?
私には2つのクラスがあります:
両方のクラスで使用できるインターフェースを作成したいと思います。最も簡単な解決策は、TestClass1とTestClass2にインターフェイスを実装することですが、これらのクラス(外部dll)の実装にアクセスできません。新しいインターフェイスを作成し、AutoMapperを使用してTestClass1とTestClass2をITestInterfaceにマップできるかどうか疑問に思いました。
