黑马程序员技术交流社区

标题: 关于静态方法的问题 [打印本页]

作者: 史鹏飞    时间: 2013-4-25 11:15
标题: 关于静态方法的问题
本帖最后由 史鹏飞 于 2013-4-26 09:08 编辑


静态方法中只能调用静态方法吗?,如果我想调用GetString()方法,就只能把它定义为静态的?或者还有其他的方法?

作者: 殇_心。    时间: 2013-4-25 11:23
这个没了。静态方法必须调用静态。
作者: 陈晖    时间: 2013-4-25 11:30
是的,静态方法只能访问呢有static修饰的方法或成员,要不就见静态方法去掉static改为非静态方法。:)
作者: 尹丽峰    时间: 2013-4-25 11:42
静态方法中只能调用被static修饰的方法和成员
作者: 史鹏飞    时间: 2013-4-25 11:48
知道了,谢谢
作者: 乘鱼飞    时间: 2013-4-25 11:49
所有的静态方法,静态成员都是随着类的建立而建立,
而类是先建立的,实例变量,实例方法是后随实例而建立的,
所以静态方法只能访问静态成员
作者: ↖落葉下♀媃媚    时间: 2013-4-25 12:44
在静态方法中可以调用其他的静态方法、字段和属性,但是不能调用非静态方法、字段、属性,在非静态方法中可以调用静态方法

作者: 张林杰    时间: 2013-4-26 16:08
你可以将所在类实例化后,用实例名.成员名 来访问非静态成员,例如:
  1.     class Program
  2.     {
  3.         static void Main(string[] args)
  4.         {
  5.             
  6.             Program aa = new Program();            
  7.             aa.GetString();
  8.         }
  9.         string GetString()
  10.         {
  11.             return "22";
  12.         }
  13.     }
复制代码

作者: 刘赛    时间: 2013-4-26 16:12
这样行吗
  1.     class Program
  2.     {
  3.         static void Main(string[] args)
  4.         {
  5.             string str=GetString();
  6.         }
  7.         static string GetString()
  8.         {
  9.             return "22";
  10.         }
  11.     }
复制代码

作者: 闫常国    时间: 2013-4-26 19:16
静态方法是依附于类的,在类加载到内存中后,静态方法就也被加载到内存中了。而非静态方法是依附于对象的,没有对象也就无所谓有非静态方法,非静态方法是在对象被创建以后才创建的。所以,静态方法是先于非静态方法进入内存的,当静态方法进入内存时,非静态方法还没有被创建,所以静态方法无法调用非静态方法。希望对你有所帮助
作者: 闫常国    时间: 2013-4-30 16:30
把GetString()方法也写成静态方法




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2