次のクラスがある場合:
public class MyClass { public static int MyStaticInt = 0; }
1つのソリューションでMyNameSpace.MyClass.MyStaticInt
、2つの異なるアセンブリで参照している場合、同じ変数を参照していますか?
次のクラスがある場合:
public class MyClass { public static int MyStaticInt = 0; }
1つのソリューションでMyNameSpace.MyClass.MyStaticInt
、2つの異なるアセンブリで参照している場合、同じ変数を参照していますか?
静的状態はデフォルトでスコープごとにスコープされ、属性AppDomain
を使用する場合はスレッドごとに構成できます。ThreadStatic
これは、アセンブリが同じプロセスで実行されていて、プロセスにアプリケーション ドメインが 1 つしかない場合に、仮定が有効であることを意味します。
static
文脈に応じていくつかのことを意味します。
AppDomain
。ThreadStatic
、スレッドごとに値のインスタンスを 1 つ取得します。サンプルコードでは、最初の条件が当てはまるようです。いずれの場合も、データが定義されている特定のアセンブリに違いはありません。
はい、クラスごとのプロセスごとに 1 つのインスタンスしかありません。
これに対する小さな注意点は、ジェネリック クラスのインスタンスごとに変数のインスタンスが 1 つあるジェネリック クラスがある場合です。つまり、MyGenericClass のインスタンスが 1 つ、MyGenericClass のインスタンスが 1 つになります。
編集
実際には、AppDomain ごとに 1 つのインスタンスがあるため、AppDomain の複数のコピーを自分で作成することにより、複数のコピーを作成できます。
いいえ、 MyClass.MystaticInt はクラス MyClass に対してのみローカルです。