##わからないこと
大前提として、「static修飾子をもつものはインスタンスが作れない」ことは理解しています
ですので
c#
1public static class A 2{ 3 public static int a;//OK 4 public int b;//NG 5 6 public static void AA()//OK 7 { 8 9 } 10 public void BB()//NG 11 { 12 13 } 14}
このようにclassにstaticがついていると、中のメンバーやメソッドにstaticを付けないといけないことはわかります。
問題は
C#
1 2public class A 3{ 4 public static int a; 5 public int b; 6 7 public static void AA()//OK 8 { 9 Debug.Log(a); 10 } 11 public static void AB()//NG??? 12 { 13 Debug.Log(b); 14 } 15 public static void AC()//OK 16 { 17 AA(); 18 } 19 public static void AD()//NG??? 20 { 21 BA(); 22 } 23 public void BA()//OK 24 { 25 Debug.Log(a); 26 } 27 public void BB()//OK 28 { 29 AA(); 30 } 31}
っこのABとADのように「静的でないクラスの中にあるstaticメソッド内で静的でないメソッドや変数を呼ぶとエラーを吐く」ことについて、
なぜこのような仕様になっているかが分からないです。
私の考えとしては、「staticな関数や変数をインスタンス化するわけではないからstaticメソッド内で何を参照しようが問題ないのでは」ということです。
よろしくお願いします
回答3件
あなたの回答
tips
プレビュー