静态方法通过类名访问,实例方法通过实例访问,为什么静态方法和实例方法不可以有相同的签名?
    
class Test
{
   public void A()
   {    }   public static void A()
   {
 
   }
}

解决方案 »

  1.   

    因为非静态方法,可以调用静态方法。
    那么会出现这种情况:
    static void Main(string[] args)
            {
                Test t = new Test();
                t.A();            Console.ReadKey();
            }
            public class Test
            {
                public void A()
                {
                    T1();
                    T2();
                }            public void T1()
                {
                    Console.WriteLine("T1");
                }            public static void T2()
                {
                    Console.WriteLine("static T2");
                }
            }
    A方法中调用了非静态的T1和静态的T2方法。
    但是如果非静态和静态都叫做T1,就出问题了。
    编译器肯定不知道你到底要调用哪个T1了。
      

  2.   

    道理是这个道理,但这个可以用this关键字表示实例引用,用类名表过静态调用吧,差那么点感觉啊。
      

  3.   


        public class Test
        {
            public void A()
            {
                this.T();
                Test.T();
            }        public void T()
            {
                Console.WriteLine("T");
            }        public static void T()
            {
                Console.WriteLine("Static T");
            }
        }
    为什么我感觉可以这样写?可能我是个杠精
      

  4.   


        public class Test
        {
            public void A()
            {
                this.T();
                Test.T();
            }        public void T()
            {
                Console.WriteLine("T");
            }        public static void T()
            {
                Console.WriteLine("Static T");
            }
        }
    为什么我感觉可以这样写?可能我是个杠精
    可能更多的还是设计java和.net的时候,考虑到的因素。
    这就像为什么摒弃了多继承,采用单继承一样。
    一定要说为什么,说为了简化类,不让他变得复杂。这就显得有点苍白无力。
    但是事实上,就是这么回事。