日期:2014-05-19  浏览次数:20764 次

请大家帮忙看一下这个问题,真的不知道应当如何描述,谢谢各位了.
在c#当中如下:
using   System;

class   A
{       static   int   i=999;
public   static   void   main()
        {
A   a=new   A();
                Console.WriteLine(a.i); //提示错误
}
}
在java当中如下:
class   A
{               static   int   i=999;
public   static   void   main(String   args[])
                {
A   a=new   A();
                                System.out.println(a.i); //运行正常
}
}
针对上述两种情况,请高手给我解答一下,谢谢了.

------解决方案--------------------
static的缘故
类的成员或者是静态成员,或者是实例成员。一般说来,可以这样来理解:静态成员属于类,而实例成员属于对象(类的实例)。当字段、方法、属性、事件、运算符和构造函数声明中含有 static 修饰符时,它声明静态成员。
下列示例阐释访问静态和实例成员的规则:
class Test
{
int x;
static int y;
void F()
{
x = 1; // Ok, same as this.x = 1
y = 1; // Ok, same as Test.y = 1
}

static void G()
{
x = 1; // Error, cannot access this.x
y = 1; // Ok, same as Test.y = 1
}
static void Main()
{
Test t = new Test();
t.x = 1; // Ok
t.y = 1; // Error, cannot access static member through instance
Test.x = 1; // Error, cannot access instance member through type
Test.y = 1; // Ok
}
}



------解决方案--------------------
额??不是两个都错吗,static修饰的变量不是要类名直接访问的吗
------解决方案--------------------
改成
Console.WriteLine(a.i.ToString());

Console.WriteLine(i.ToString());
分别试一下吧
------解决方案--------------------
在java 中访问静态变量可以用 类名.静态变量 也可以用 对象名.静态变量(虽然这样不推荐)

但在C#中只能用 类名.静态变量 这种形式, 对象名.静态变量 被认为是错误的语法