靜態方法通過類名訪問,實體方法通過實體訪問,為什么靜態方法和實體方法不可以有相同的簽名?
class Test
{
public void A()
{
}
public static void A()
{
}
}
uj5u.com熱心網友回復:
因為非靜態方法,可以呼叫靜態方法。
那么會出現這種情況:
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了。
uj5u.com熱心網友回復:
道理是這個道理,但這個可以用this關鍵字表示實體參考,用類名表過靜態呼叫吧,差那么點感覺啊。
uj5u.com熱心網友回復:
public class Test
{
public void A()
{
this.T();
Test.T();
}
public void T()
{
Console.WriteLine("T");
}
public static void T()
{
Console.WriteLine("Static T");
}
}
為什么我感覺可以這樣寫?可能我是個杠精
uj5u.com熱心網友回復:
可能更多的還是設計java和.net的時候,考慮到的因素。
這就像為什么摒棄了多繼承,采用單繼承一樣。
一定要說為什么,說為了簡化類,不讓他變得復雜。這就顯得有點蒼白無力。
但是事實上,就是這么回事。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/146981.html
標籤:C#
上一篇:怎么在c# 中,在webform1中點擊一個button,彈出webform2
下一篇:<新手>下面的24個不會,求解