/// <summary> /// 静的メソッド内動的変数 /// </summary> public static void Test05() { // 本クラスのインスタンス生成 // これにより動的変数str02のメモリが確保される TestClass02 testClass02 = new TestClass02(); // インスタンスが生成され、動的変数のメモリが確保されているためエラーにならない testClass02.str02 = "TEST005"; Console.WriteLine(testClass02.str02); }
static void Main(string[] args) { #region パターン01_静的メソッド /* * 単純に静的クラスの静的メソッドを呼び出す */ #if PATTERN01 // 静的クラスの静的メソッド使用 TestClass01.Test01(); #endif #endregion #region パターン02_動的メソッド /* * 動的クラスでも静的メソッドであれば * インスタンス化せずに呼び出すことが可能 */ #if PATTERN02 // 動的クラスの静的メソッド使用 TestClass02.Test02(); #endif #endregion #region パターン03_動的メソッドエラー #if PATTERN03 /* * エラーパターン * 動的クラスの動的メソッドをインスタンス化しないで * 使用しようとする */ // 動的クラスの動的メソッド使用 TestClass02.Test03(); #endif #endregion #region パターン04_動的メソッド /* * 動的クラスの動的メソッドを使用するにはインスタンス化が必須 */ #if PATTERN04 // 動的クラスインスタンス化 TestClass02 tearClass02 = new TestClass02(); // 動的クラスの動的メソッド使用 tearClass02.Test03(); #endif #endregion #region パターン05_動的メソッドエラー #if PATTERN05 /* * コンパイルエラーパターン * 静的メソッド内で動的変数を使用しようとする */ #endif #endregion #region パターン06_静的メソッド内動的変数 /* * 静的メソッド内で動的変数のを含むクラスのインスタンス化が * されていれば動的変数のメモリが確保されているため問題なく呼び出せる */ #if PATTERN06 // 動的クラスの動的メソッド使用 TestClass02.Test05(); #endif #endregion Console.ReadKey(); }