因为非静态方法,可以调用静态方法。 那么会出现这种情况: 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了。
道理是这个道理,但这个可以用this关键字表示实例引用,用类名表过静态调用吧,差那么点感觉啊。
public class Test { public void A() { this.T(); Test.T(); } public void T() { Console.WriteLine("T"); } public static void T() { Console.WriteLine("Static T"); } } 为什么我感觉可以这样写?可能我是个杠精
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的时候,考虑到的因素。 这就像为什么摒弃了多继承,采用单继承一样。 一定要说为什么,说为了简化类,不让他变得复杂。这就显得有点苍白无力。 但是事实上,就是这么回事。
那么会出现这种情况:
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了。
public class Test
{
public void A()
{
this.T();
Test.T();
} public void T()
{
Console.WriteLine("T");
} public static void T()
{
Console.WriteLine("Static T");
}
}
为什么我感觉可以这样写?可能我是个杠精
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的时候,考虑到的因素。
这就像为什么摒弃了多继承,采用单继承一样。
一定要说为什么,说为了简化类,不让他变得复杂。这就显得有点苍白无力。
但是事实上,就是这么回事。