不行,
可以这样理解
static修饰的方法可以直接用类名调用
非static修饰的方法必须用类new出对象才能调用
当我们用类名直接调用时,可能这个类的对象并没有new。
如果这时候static方法里调用非static的方法就会出现空指针异常,
当然这种错误编译时就不会通过。
错误代码演示:
1 class Program 2 { 3 4 public int fact(int n) 5 { 6 if (n <= 1) 7 return 1; 8 else 9 return n * fact(n-1); 10 } 11 12 static void Main(string[] args) 13 { 14 //利用递归来计算阶乘 15 fact //看到了吗?fact是根本打不出来的。 16 17 } 18 }
正确代码演示:
1 class Program 2 { 3 4 static int fact(int n) 5 { 6 if (n <= 1) 7 return 1; 8 else 9 return n * fact(n-1); 10 } 11 12 static void Main(string[] args) 13 { 14 //利用递归来计算阶乘 15 Console.WriteLine(fact(3)); 16 17 } 18 }
原文:http://www.cnblogs.com/yunquan/p/4883172.html