初学C#的一个小问题

ljm19891118 2010-02-03 05:35:59
该代码

public int i=0;
i不是静态变量,但是下面的main是静态函数调用了非静态的addi()并且使用了非静态的变量i
看得懂
但有个小问题
C#里面静态函数可以使用非静态的变量
或者调用非静态的函数么




using System;
class ljm
{

class A
{
public int i=0;
public void addi()
{
i=i+1;
}
}
static void Main()
{
A a=new A();
a.addi();
a.addi();
A b=new A();
b.addi();
Console.WriteLine(a.i);
Console.WriteLine(b.i);
}
}



当在
public int i=0;
加个static以后
为什么要使用类名调用i(A.i)
代码如下

using System;
class ljm
{

class A
{
public static int i=0;
public void addi()
{
i=i+1;
}
}
static void Main()
{
A a=new A();
a.addi();
a.addi();
A b=new A();
b.addi();
Console.WriteLine(A.i);
//Console.WriteLine(b.i);
}
}
...全文
41 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
验证码识别 2010-02-03
  • 打赏
  • 举报
回复
A.i 就是静态成员的访问方式

i是属于 A 类的,一个类只有一个i

bancxc 2010-02-03
  • 打赏
  • 举报
回复
你已经实例化这个类了 new A() 所以可以访问这个类的方法 ,这个跟静态没关系了

如果是静态方法 可以通过类名来访问
ljm19891118 2010-02-03
  • 打赏
  • 举报
回复
刚才自己也在电脑上试验了下
也就是说
实例变量能访问非静态的成员变量、属性和方法,类名不能访问
类名能访问静态的成员变量、属性和方法,实例变量不行
tan124 2010-02-03
  • 打赏
  • 举报
回复
ststic 表示静态
xupeihuagudulei 2010-02-03
  • 打赏
  • 举报
回复
静态变量属于全局变量
只有那个类拥有
类的实例不能拥有
所以调用需要类名再加变量名。
ljm19891118 2010-02-03
  • 打赏
  • 举报
回复
以上代码都可以运行
下面的代码的A.i
不是很明白

110,535

社区成员

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

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

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