我在看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;
        }
    }
}

解决方案 »

  1.   

    static表明那个方法属于其所在的类,去掉static在用到那个方法时,要先实例化.去掉static后可以这样用:
    Program p=new Program()
    p.ClassTaker(testclass)
      

  2.   

    去掉 static 就成了实例方法了
    不能直接调用了
    ClassTaker(testclass );ClassTaker() 是 class Program 内的方法
    你看 Program 哪里 new 了
    没有
    所以就只能静态调用
    要静态调用 就必须是 static 的方法
      

  3.   

    static即静态方法,可以不用实例化该类就可调用此方法。
    如System.Console.Write()。
      

  4.   

    因为是console程序,main是static的