C#书上的一个static例子,不是很明白

wfq556677 2011-06-30 05:53:32
请各位大侠帮忙,谢谢!为什么Fun2就不能访问a呢?
class ClassA
{
public int a;
static public int b;
void Fun1() //定义一个非静态成员函数
{
a=10;
//正确,直接访问非静态成员
b=20;
//正确,直接访问静态成员
}
static void Fun2()
{
a=10;
//错误,不允许访问非静态成员
b=20;
//正确,允许访问静态成员,相当于ClassA.b=20
}
}
...全文
117 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
wfq556677 2011-07-01
  • 打赏
  • 举报
回复
学习了!谢谢各位大侠
remember_me 2011-07-01
  • 打赏
  • 举报
回复
静态成员中,不可以直接访问实例成员,需要实例化类,使用对象.实例成员来进行访问。

zzs0618 2011-07-01
  • 打赏
  • 举报
回复
类的静态成员(变量和方法)属于类本身,在类加载的时候就会分配内存,可以通过类名直接去访问;非静态成员(变量和方法)属于类的对象,所以只有在类的对象产生(创建类的实例)时才会分配内存,然后通过类的对象(实例)去访问。

在一个类的静态成员中去访问其非静态成员之所以会出错是因为在类的非静态成员不存在的时候类的静态成员就已经存在了,访问一个内存中不存在的东西当然会出错
kingdom_0 2011-07-01
  • 打赏
  • 举报
回复
静态方法和静态成员面向的是类,而类中的非静态方法和非静态成员面向的是对象。
静静张 2011-06-30
  • 打赏
  • 举报
回复
记住就行了 静态方法 只能调用静态变量
休闲中 2011-06-30
  • 打赏
  • 举报
回复
静态函数只能访问静态的变量,静态函数不需要初始化类,可以直接调用,而动态变量则需要进行创建后,才能调用!
rcy5211314 2011-06-30
  • 打赏
  • 举报
回复
记住一点,静态的方法只能调用静态属性,静态的方法

但非静态的方法,却可以调用静态方法,静态属性
renyiqiu 2011-06-30
  • 打赏
  • 举报
回复
静态函数不能访问类中的非静态成员!!!
chenwei9120 2011-06-30
  • 打赏
  • 举报
回复
z静态函数怎么能访问类的非静态成员呢?这个东西很好理解,如果直接访问静态函数,静态函数里有类的非静态成员,那么这个非静态成员属于哪个对象?甚至连这个类有没有被实例化都不知道。
ShinNakoruru 2011-06-30
  • 打赏
  • 举报
回复
static 方法与普通方法最重要的一个区别是它没有this参数。
普通方法虽然看起来并没传入一个this,但事实上是有的。

没有this,自然无法访问this.a
wfq556677 2011-06-30
  • 打赏
  • 举报
回复
小弟愚昧,为什么用Fun2的时候还没有a?那和3楼得说法有什么区别?
xuexiaodong2009 2011-06-30
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 masschoi 的回复:]

用FUN2的时候还没有a
[/Quote]用FUN2的时候还没有a
victor899 2011-06-30
  • 打赏
  • 举报
回复
因为静态成员隶属于类,不属于任何对象,所以对象可以访问静态成员,静态方法不能访问非静态成员
Anyhasgone 2011-06-30
  • 打赏
  • 举报
回复
静态方法能访问非静态数据成员吗!貌似不能吧
唵嘛呢叭咪吽 2011-06-30
  • 打赏
  • 举报
回复
用FUN2的时候还没有a

110,526

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧