問題タブ [static-variables]

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 に答える
104 参照

c# - 要素をクラス c# に渡す

以前にも似たような質問をしたので、重複していたらすみません。

これが私の質問です。ページの読み込みにラベルが付いたマスターページがあります。このコントロールをグローバルクラスに渡します。クラス内は次のようなものです。

マスターページのロードイベントで私は

ここで、アプリケーションの別の場所にコントロールがあるとします。

これにより、マスター ページのラベルが更新され、すべてが機能します。現在、これはログインしている1人のユーザーのみで機能しており、このアプリには複数のユーザーがいます。私の質問は、グローバルクラスでラベルを静的に宣言しているため、1人のユーザーのラベルを更新すると、他のユーザーの表示に影響しますか? ?

これにもっと良い方法はありますか?御時間ありがとうございます。

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

c# - 私は怒っていますか?c#/静的修飾子

filename私は以下のコードを持っていますが、奇妙なことに、同じリクエストで複数回呼び出すと、()が異なっていても同じ値を返し続けます。

コードをステップスルーしたばかりで、stringbytesまったく同じ(つまり、GetBytes(string))でも同じ値を返しています。

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

c - C での静的変数の初期化

重複の可能性:
C での静的変数の初期化

C では、グローバル変数または静的変数のいずれかが自動的にゼロで初期化されることを知っています。しかし、それらの両方が初期化されるのか、それとも 1 つだけが初期化されるのかはわかりません。関数で定義された変数についてではなく、.c ファイルでグローバルに定義されていることに注意してください。

次の変数のうち、自動的にゼロで初期化されるのはどれですか?

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

c++ - 静的よりも名前のない名前空間の優位性?

名前のない名前空間はstaticキーワードよりも優れていますか?

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

c# - c#: 静的メソッドの静的変数

静的メソッドで静的変数を使用できますか? この変数の値は、メソッドへのすべての呼び出しで保持されますか?

例えば。

0 投票する
5 に答える
52079 参照

c++ - C++ 静的メンバー変数とその初期化


C++ クラスの静的メンバー変数の場合 - 初期化はクラスの外部で行われます。なぜだろう?これに対する論理的な推論/制約はありますか? それとも、純粋にレガシーな実装ですか? 標準ではこれを修正したくないのですか?

クラスで初期化を行うことは、より「直感的」で混乱が少ないと思います。また、変数の静的性とグローバル性の両方の感覚を与えます。たとえば、 static const メンバーが表示されている場合。

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

c++ - グローバルスコープでの静的変数と関数の使用

static関数ではなく.cppファイルのグローバルスコープにある場合に、変数にフラグを立てる用途はありますか?

関数にもstaticキーワードを使用できますか?はいの場合、それらの用途は何ですか?

0 投票する
4 に答える
1386 参照

c++ - 静的変数の代わりに使用するもの

C++ プログラムでは、できればプログラムの開始時に一度インスタンス化されるヘルパー定数オブジェクトが必要です。これらのオブジェクトはほとんど同じ翻訳単位内で使用されるため、これを行う最も簡単な方法はそれらを静的にすることです。

しかし、この静的初期化順序の問題があるため、Helper( を介して) 他の静的を参照するとparams、UB につながる可能性があります。

もう 1 つのポイントは、最終的にはこのオブジェクトを複数のユニットで共有する必要があるということです。そのままにstaticして.hファイルに入れると、複数のオブジェクトが作成されます。などを気にすることでそれを回避できましexternたが、これにより最終的に同じ初期化順序の問題が発生する可能性があります(非常にCっぽいとは言えません)。

私はシングルトンについて考えましたが、定型コードと不便な構文 (例: MySingleton::GetInstance().MyVar) のためにやり過ぎです - これらのオブジェクトはヘルパーであるため、物事を複雑にするのではなく単純化する必要があります...

同じ C++ FAQでこのオプションについて言及されています。

これは本当に使用され、良いことだと考えられていますか? このようにする必要がありますか、それとも他の方法をお勧めしますか? ありがとう。

編集:ヘルパーが実際に必要な理由を明確にする必要がありました。それらは通常の定数に非常に似ており、事前に計算することもできましたが、実行時にそれを行う方が便利です。マルチスレッドの問題を自動的に解決するため、メインの前にそれらをインスタンス化することをお勧めします (ローカルの静的は C++03 では保護されていません)。また、私が言ったように、それらはしばしば翻訳単位に限定されるため、それらをエクスポートして main() で初期化することは意味がありません。それらは単なる定数と考えることができますが、実行時にのみ認識されます。

0 投票する
4 に答える
4562 参照

c - Cでmainの前にいくつかの関数を呼び出す

main関数の前にいくつかのことをしたいのですが。複数のソースファイルがあります。各ファイルには、前に実行する必要のある作業がいくつかありますmain。C ++では問題ありませんでしたが、Cでは問題がありました。

C ++では、これは2つの方法で実行できます。

  1. グローバルクラス/構造体のコンストラクターを利用します。
  2. グローバル変数への関数の呼び出し

例えば、static const int __register_dummy_ = __AddRegisterMetaInfo(...);

ただし、Cではどちらの方法も不可能です。明らかに、コンストラクターはありません。したがって、最初のオプションは本質的に不可能です。

2番目のオプションは可能だと思いましたが、Cではコンパイルされませんでした(Visual C ++でのみテストしました。C2099が提供されます)。Cは、定数から非自動変数のみを許可します。

mainの前にいくつかの関数を呼び出す方法はありますか?


編集:多くの人が私が本当にやりたいことを誤解しているようです。この質問を簡単な方法で書いて申し訳ありません。

私がする必要があるのは、MFCのアプローチと同じように、一種のC++ランタイムクラス情報機能を実装することです。このアプローチでは、すべてのソースコードからいくつかの情報を取得する必要があります。たとえば、各ソースファイルにクラスの定義があり、すべての情報(たとえば、クラス名と親クラス)を表示したいとします。最も簡単な方法は、静的コンストラクターを各ファイルに配置することです。各コンストラクターは、グローバルデータ構造にアクセスし、その情報を登録します。しかし、私はCで同様のことを実装する方法も見つけたかったのです。したがって、単にpre_main_jobinを呼び出すだけmainでは答えにはなりません。

この静的コンストラクターの乱用は、LLVMコンパイラースイートでも見られることに注意してください。各最適化/分析機能はパスとして実装されます。これらのパスはすべて、静的コンストラクターを介して登録されます。

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

java - クラスの他のインスタンスは、別の静的変数にアクセスできますか?

各インスタンスの URLClassLoader によってロードされることがわかっているクラスがあります。そのクラスに静的変数がある場合、他のインスタンスはそれにアクセスできますか?

たとえば、Class MyClass は ClassLoader A と ClassLoader B によってロードされ、A によってロードされた MyClass が B によってロードされた MyClass と同じ静的フィールドを持つかどうかを知りたいとします。

したがって、基本的に、次のステートメントは常に真になります。