問題タブ [static-classes]

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.

0 投票する
2 に答える
321 参照

.net - 静的クラスとビジネスオブジェクトCOMライブラリ

以下のコードは、ボタンイベントでビジネスオブジェクト6.5のインスタンスを開き、レポートを更新してから、レポート内のデータをcsvファイルにダンプし、ビジネスオブジェクトインスタンスを終了するwinformsアプリケーションからのものです。

初めてコードを実行すると完全に機能しますが、もう一度実行すると、行に例外が発生します

スローされる例外は「無効なオブジェクト」です。

これは、boAppが再初期化されていないという事実と、問題となっているのは静的クラスに関する知識の欠如によるものだと思います。

呼び出し方法は次のとおりです。

これはBO_Controlクラスです

0 投票する
3 に答える
860 参照

c# - C# で TextBox が更新されない

具体的には、Customer クラスの Arrival メソッドを見てください。for ループを使用して顧客クラスのインスタンスを作成しています。到着時間をテキスト ボックスに書き出そうとすると (テスト目的で)、テキスト ボックスが更新されません。どうしてこれなの?

これは、コンピューティング クラスの小さなシミュレーション プロジェクトです。これは初期段階にあり、おそらく多くの場所で間違っています。

0 投票する
2 に答える
217 参照

c# - 静的クラスの許容可能な使用?

もともと静的であることを意図していなかったクラスを持っています...

クラスを構築する際に、(1) データセットを明示的に更新しない限り、データセットを再入力したくない、(2) これらのデータのゲートキーパーは私である、と判断しました。他の誰もそれらを更新してはいけません。このクラスは、WCF サービス内から呼び出されます。

再利用したいデータセット以外に状態はありません。このクラスのすべての関数を静的にすることができます。しかし、クラスを静的にすることは受け入れられますか? それをインスタンス化し、それを保持するために WCF にメンバーレベルの変数を持つのとは対照的です。2つのアプローチの違いを確認できるかどうかはわかりません。

これをあまり議論の余地のないものにするために、私に質問させてください: クラスを静的にすることの欠点は何ですか? これをやりたくない理由。

一般的なアプローチを自由に批判してください。通常、ProcessApprovals 内でデータセットを作成し、呼び出しの最後に破棄しますが、実際にはデータを頻繁に更新する必要はありません。更新するとき; SapGs3DataSet データは実際には変更されません)。

もう 1 つの方法は、たとえば Enterprise Library を使用してデータセットをキャッシュすることです。これにより、有効期限やデータの更新方法などを設定できます。

なぜこれをすべきでないのか、最も強い議論に基づいて答えを選びます。やらないことについての強い議論がない場合は、なぜそれが大丈夫なのかについて、最も合理的な理由で答えを選びます。

ティア!
ジェームズ

0 投票する
2 に答える
1600 参照

php - 静的クラスを使用したアダプター パターン

PHP 5.x で静的クラスを使用して Adapter パターンを実装する良い方法を探しています。

これを使用したい例の 1 つは、Python のos.path.join(). Windows と Linux のアダプティ クラスの 2 つのアダプティが必要です。

これらのクラスには「コンテキスト」がないため、これらのクラスを静的クラスとして実装することは合理的だと思います。状態を保存する必要はなく、インスタンスが必要になるたびにインスタンスを作成するのは不必要に思えます。したがって、これを実装するクリーンな方法を探しています。

次の偽の実装を考えてみましょう。

最初に気付くのは、必要な OS 依存の実装の詳細を保持する、adaptee と呼ばれる初期化された静的メンバーを想定していることです。

これには、クラスの宣言の直後に呼び出す任意の名前の静的コンストラクターのような関数が必要です。(このアプローチで気になるもう1つのこと)。

もちろん、$adaptee各メソッド呼び出しでローカル変数を初期化することもできますが、それは不適切なようで、アダプティーを必要とする他の静的関数ごとに複製する必要があります。

さて... PHP のクラス実装の詳細: これらはファーストクラスのオブジェクトではないため、クラスを引数として渡すことはできませんでした。この例では、アダプティーを非静的(これを表す用語は何ですか?) クラスとして作成し、それをインスタンス化し、最終的に$adapteeアダプター クラスの静的メンバー変数に割り当てる必要があります。

たぶん、これは私が持っているこの奇妙で完全に主観的な考えにすぎないのかもしれませんが、このようにするのは適切ではないと本当に感じています。より良い実装についてのアイデアはありますか?

私が持っていたもう1つのアイデアは、代わりにアダプティーのクラス名を保存し、代わりに使用するcall_user_funcことですが、このアプローチを使用するのはあまり快適ではありません。

アップデート

これを適切に説明していない可能性があるため、更新でこれを説明しようとします。

基礎となるオペレーティング システムを取得する方法については調べていませんが、OS が Linux、Windows、FreeBSD、またはその他のいずれであるかによって、静的クラスが異なる動作をするためのきちんとした方法が必要です。

アダプターのパターンを考えたのですが、静的コンストラクターがないため、実際にはクラスを初期化できません。1 つの方法は、すべての public static メソッド呼び出しの開始時に初期化することです (または、初期化されているかどうかを確認するだけです)。

もう 1 つの可能性は、静的コンストラクターのようなメソッドを作成し、宣言の直後に呼び出すことです。それはうまくいくかもしれませんが、これを達成するために、他に、おそらくもっとエレガントな方法があるのではないかと思っています。

私の最初の例については、ユーティリティ関数であると想定されており、実際には状態を保持する必要がないため、どのような種類のパスオブジェクトも探していません。私が望むのは、呼び出されるたびに異なる OS を区別する必要なく、文字列を返す Path ファクトリ関数です。「ライブラリ」のことにより、関連するユーティリティ関数の疑似名前空間として静的クラスを作成し、アダプターパターンでサポートする必要があるさまざまな実装の詳細を作成しました。今、私は2つを組み合わせるエレガントな方法を探しています。

0 投票する
3 に答える
2598 参照

c# - 静的クラスの非静的子クラスをシリアライズする方法

私はかなり普通のクラスをシリアライズしたいのですが、キャッチは次のような静的クラスにネストされていることです:

このコード:

次のエラーが発生します。

そのエラーはまったく無関係のようです。StaticClass.SomeType静的タイプではありません。

これを回避する方法はありますか?このエラーがばかげていると思うのは間違っていますか?

0 投票する
2 に答える
298 参照

c# - 配列から静的クラスを参照していますか?

私は番号のリストを持っています、そして同じであるそれぞれの番号はまったく同じように振る舞うべきです。したがって、各番号に静的クラスがあるので、クラスを変更すると、それが参照するすべての番号も変更されます。

数値にアクセスする方法はラッパー関数を介しているため、配列を直接参照していません。例:

だから、私はこれについてどうやって行くのですか?

0 投票する
1 に答える
1162 参照

c++ - std::map がオブジェクトの挿入に失敗する

私が作成しているプログラムは、さまざまな種類のリソースのアクセス プールを必要としますが、アクセスできるクラスはわずかです。リソース プールも独自のクラスです。そのため、リソース プールに静的クラスを使用し、この方法で他のユーザーにアクセスさせることにしました。

しかし、プールにリソースを追加する際に奇妙な問題が発生しています。各プールは std::map として表され、挿入後もマップは空のままです。これは、マップが静的クラス内にあることに関係していると思います。これが、ここで意図したとおりにマップが機能しない理由ですか?

リソース プールの関連コード

使用方法の関連コード

その結果、何も見つからないため、add は NULL を返します。テクスチャを使って何もしていないので、このプログラムはクラッシュしません。今のところ挿入をテストしているだけです。

0 投票する
1 に答える
275 参照

c# - この静的クラスはマルチ ユーザー シナリオで壊れますか?

拡張メソッドを使用して次のような静的クラスを作成するとします。

マルチ ユーザー システムでは、状態管理ディクショナリは変換アルゴリズムに正しい値を提供できませんか? 通常のクラスはより良い設計になるのでしょうか、それともメソッド内に Dictionary を押し込むことでより良い設計になるのでしょうか?

0 投票する
0 に答える
1073 参照

c++-cli - クラス ライブラリ - 静的ライブラリ - リンカーの問題 LNK4221

VS2008、クラス ライブラリ テンプレートを /clr と共に使用しています。管理されたクラス ライブラリが必要でした。ライブラリをdllとしてコンパイルすると、すべて正常に動作します。

ヘッダー ファイル: multiclasses.h

ソース ファイル: multiclasses.cpp

構成タイプを静的ライブラリ (.lib) に変更すると、リンカーの警告が表示されます: 警告

警告 LNK4221: パブリック シンボルが見つかりません。アーカイブ メンバーにアクセスできなくなります

したがって、このライブラリを使用するプロジェクトは次のようになります。

エラー 1 エラー LNK2020: 未解決のトークン (06000001) multiclasses.Class1::add

エラー 2 エラー LNK2020: 未解決のトークン (06000002) multiclasses.Class1::hadd

エラー 3 エラー LNK2020: 未解決のトークン (06000004) multiclasses.Class2::add

エラー 4 エラー LNK2020: 未解決のトークン (06000005) multiclasses.Class2::hadd

クラス ライブラリをスタティック ライブラリ (.lib) としてコンパイルする方法はありますか?
クラスを静的ライブラリにエクスポートできますか? 静的ライブラリでクラスをエクスポートしようとするのは根本的に間違っていますか?

0 投票する
2 に答える
660 参照

lucene - Luceneがテキストをトークン化するプロセス

これは一般的なJavaの質問と見なすことができますが、理解を深めるために、例としてLuceneを使用しています。

Luceneでさまざまなトークナイザーを使用して、テキストをトークン化できます。メインの抽象Tokenizerクラスと、それを拡張するさまざまなクラスがあります。TokenFilterについても同じです。

これで、ドキュメントのインデックスを作成するたびに、新しいTokenizerが作成されるようです。問題は、Tokeinzerは単なるユーティリティクラスなので、静的にしてみませんか?たとえば、すべての文字を小文字に変換するTokenizerは、取得するすべての入力に対してそれを実行する静的メソッドを持つことができます。インデックスを作成するすべてのテキストに対して新しいオブジェクトを作成することのポイントは何ですか?

言及すべきことの1つ-Tokeinzerには、トークン化するために受け取る入力を含むプライベートフィールドがあります。トークン化プロセスが終了した直後にオブジェクトが破棄され、新しいトークン化されたテキストが返されるため、この方法で保存する必要がある理由がわかりません。私が考えることができる唯一のことは、多分マルチスレッドアクセスですか?

ありがとうございました!