读书人

请教一个关于static的有关问题

发布时间: 2012-02-10 21:27:42 作者: rapoo

请问一个关于static的问题
我在看MSDN中的一个例子,不是很明白为什么static void ClassTaker(TheClass c)
要声明成static的 我把static去掉
就报错 An object reference is required for the nonstatic field, method, or property 'ConsoleApplication1.Program.ClassTaker(TheClass) 'using System;


using System.Collections.Generic;
using System.Text;
using System;

class TheClass
{
public string willIChange;

}
...

namespace ConsoleApplication1
{
class Program
{
static void ClassTaker(TheClass c) //为什么要申明成static
{
c.willIChange = "changed! ";
}

static int Main(string[] args)
{
TheClass testclass = new TheClass();
ClassTaker(testclass );
return 0;
}
}
}


[解决办法]
static表明那个方法属于其所在的类,去掉static在用到那个方法时,要先实例化.去掉static后可以这样用:
Program p=new Program()
p.ClassTaker(testclass)
[解决办法]
去掉 static 就成了实例方法了
不能直接调用了
ClassTaker(testclass );

ClassTaker() 是 class Program 内的方法
你看 Program 哪里 new 了
没有
所以就只能静态调用
要静态调用 就必须是 static 的方法
[解决办法]
static即静态方法,可以不用实例化该类就可调用此方法。
如System.Console.Write()。

读书人网 >C#

热点推荐