A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 邵帅 中级黑马   /  2012-12-11 21:55  /  1905 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public static void GetMax(int num1, int num2)我定义了一个方法,里面的这些关键字基本都明白,就是static,这个关键字是静态的,这具体是什么意思呢,静态是相对什么来说的

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

5 个回复

倒序浏览
1. public static void GetMax(int num1, int num2)方法为static方法,static方法其实就是普通函数,不用new就能用的方法;
2. 在static方法中可以调用其他static成员,但是不能调用非ststic成员;
3. 在非static方法中可以调用static成员。
回复 使用道具 举报
1 关于this :在C#中非static方法,都会有一个隐含的参数----也就是this,this存放于寄存器ecx中,所以不能对this进行取地址操作,因为他根本就不在内存当中。这个this中存放的就是在堆空间分配的对象的首字节的地址。所以对象调用一个非static方法时,这个方法很“清楚”是“谁”调用了我。
2 static方法可以直接调用static成员:当程序还没有进入到main时static成员就已经在内存中分配好了空间,所以可以被static方法直接调用也可以被其它非static方法调用。static成员是所有对象共享的。
3 static方法不能调用非static成员:因为static方法是没有this这个隐含参数的,所以static方法不能调用非static成员,也就是说他根本不知道非static成员在哪里
4 static方法不用new就可以直接被调用: static方法是在静态存储区分配的,也是在对象产生这前就已经分配好空间了。所以不用new就可以直接调用。和普通函数的唯一区别就是必须用一个类名来引用它。使得这个方法有了作用域的概念。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
静态方法(含static)只能访问静态字段(含static),而非静态方法不仅可以访问静态字段,还可以访问非静态字段

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
static表示静态,可以修饰方法,也可以修饰类、变量的;静态方法只能访问静态字段,而非静态方法不仅可以访问静态字段,还可以访问非静态字段

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
被static定义了的方法、类、或字段,他们都被存放在静态存储区中。他们的生存周期变为了整个程序的生存周期。这就是静态的意思。
对于类,因为类中的字段,因为已经被分配了存储空间,所以static字段不在与具体的实例相关联,而只与类关联。
对于方法,因为c#里面的方法都是在类中的! 都有一个this指针,这样就可以访问自身的成员了。而静态方法没有这个指向自身的this指针。对于非静态成员,静态方法自然不能直接访问,而它可以访问静态成员,因为已经分配了空间。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马