問題タブ [static-constructor]
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.
c# - C#静的コンストラクターの競合状態
私は、静的コンストラクターが複数回呼び出される可能性があるため、静的コンストラクターが競合状態に陥る可能性があると述べている友人と議論していました。これは、大量のマルチスレッド環境でのみ発生する可能性があるようです。それは可能ですか?
彼が間違っていることを証明する文書を見つけることができませんでした。誰かがこれについて何か洞察を持っていますか?
ありがとう!
c# - Linqpad の静的コンストラクター内でタスクとスレッドが実行されない
このコードは、回線上で無期限に待機しますt.Wait()
。
タスクが実行され、すぐに終了することを期待しています。理由について何か考えはありますか?これは、インスタンス コンストラクターでは発生しないようです。v4.42.01
c# - 異なる構成値を持つ単体テスト静的コンストラクター
app.config値を読み取るために使用する静的コンストラクターを持つクラスがあります。さまざまな構成値を使用してクラスを単体テストするにはどうすればよいですか。各テストを異なるアプリドメインで実行することを考えているので、各テストに対して静的コンストラクターを実行できますが、ここでは2つの問題があります:
1。各テストを別々のアプリドメインで実行する方法がわからない
2.方法実行時に構成設定を変更しますか?
誰かがこれを手伝ってくれませんか?または誰かがより良い解決策を持っていますか?ありがとう。
c# - How can static constructors be made non-private?
Access modifiers like public
, private
are not allowed on static constructors in C#. Yet, Visual Studio code analysis has a warning in C# security category that says "CA2121: Static constructors should be private".
Is it possible to make a static constructor non-private? Or is that an error of Visual Studio code analysis?
CLARIFICATION: I'm not trying to make any constructor non-private. So "why?" questions are irrelevant. I'm just curious about the contradiction between two Microsoft tools and want to see if there is anything I don't know about how static constructors are handled.
c# - プライベート静的読み取り専用フィールドを変更できるのに、パブリックフィールドは変更できないのはなぜですか?
このようなコードを持つ:
プライベート静的読み取り専用フィールドを変更できるのに、パブリックフィールドは変更できないのはなぜですか?
PS:もちろん私はプロパティを使用しています。
c# - 静的コンストラクターを明示的に呼び出す
以下のクラスの単体テストを書きたいと思います。
名前が「MyEntity」以外の場合、mgr は空白にする必要があります。
Negative Unit test
Manager のプライベート アクセサーを使用して、名前を "Test" に変更して、mgr が null になるようにします。そして、mgr の値を確認します。これを実現するには、静的コンストラクターを明示的に呼び出したいのですが、静的コンストラクターを呼び出すときに
name は常に "MyEntity" に設定され、name を "Test" に設定して静的コンストラクターを呼び出す方法。
c# - ジェネリック型パラメーターとして使用されるクラスで静的コンストラクターが呼び出されないのはなぜですか?
次のクラスがあるとします。
出力は
仕様によると、これは理にかなっています。
最初のインスタンスが作成される前、または静的メンバーが参照される前に、クラスを初期化するために静的コンストラクターが自動的に呼び出されます。
しかし、型がジェネリック型パラメーターとして参照されているときに静的コンストラクターが呼び出されないのはなぜでしょうか。
c# - .Net のプライベート コンストラクターと静的コンストラクター
私はこれをたくさん検索しましたが、明確な答えはありません (少なくとも私にとっては!)。今、私はこの質問をSOに入れています。他の場所ではより明確な答えを得ることができないと信じているからです。
クラスでプライベート/静的コンストラクターを使用する必要があるのはいつですか?
私は通常の答えにうんざりしているので、これらのコンストラクターを使用するリアルタイムの例と利点/欠点を教えてください。
c# - 静的コンストラクターが呼び出されたかどうかを確認する方法は?
データベースからデータをキャッシュするクラスがいくつかあります。これらのクラスには、静的コンストラクターが呼び出されるときにデータがロードされます。
まだ初期化されていないクラスを除いて、これらすべてのクラスで静的な Reload メソッドを呼び出す必要があります。
例: 市はデータベースからデータをキャッシュします
問題は、City がまだ使用されていない可能性があり (このサービスでは使用されていない可能性があります)、データベースからそれをロードする理由がないことです。
私の reload all メソッドは次のようになります。
StaticConstructorHasBeenCalled の実装について少し助けが必要です。
c# - .netで静的コンストラクターが実行されたかどうかを検出するには?
Intel Inspector で複雑な .net/COM アプリケーションをテストしています (ネイティブ メモリ リーク)。.net コードのかなりの場所で、COM オブジェクトへの参照を静的フィールドにキャッシュしています。明らかに、インスペクターはそれらにリークとしてフラグを立てています。いくつかのケースでは、抑制を追加するだけで十分ですが、フラグが設定された (メイン COM オブジェクトの一部として作成された) オブジェクトの数が制御不能 (数百) になることがあり、それらを抑制すると、実際のリークである同様のパターンが隠される場合があります。簡単に言うと、プロセスが終了する直前に、appdomain にロードされたすべてのアセンブリのすべてのクラスを反復処理し、COM オブジェクトを参照している静的フィールドを null に設定しています。COM オブジェクトを参照するすべての静的フィールドを有効なキャッシュとしてまだ受け入れられていなくても (そして実際のリークである可能性があります) 印刷できれば、今後の使用に最適です。
ただし、タイプが使用されていない場合は、(null かどうかを確認するために) getField を呼び出しているときに静的コンストラクターが実行され、さらに COM オブジェクトが作成される可能性があります。タイプが現在の AppDomain で使用されたことがあるかどうかを検出する方法はありますか?